summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authornp <np@FreeBSD.org>2013-01-26 03:01:51 +0000
committernp <np@FreeBSD.org>2013-01-26 03:01:51 +0000
commit05938d1be01a05bfc9bd27fa12e0e15383788ea9 (patch)
treeeda534266d17375b29e3615032e8bc2a5ab4f60b /sys/dev
parent9eab99fda3b0a5a2448aa02df1d2af494e53768e (diff)
downloadFreeBSD-src-05938d1be01a05bfc9bd27fa12e0e15383788ea9.zip
FreeBSD-src-05938d1be01a05bfc9bd27fa12e0e15383788ea9.tar.gz
Add a couple of missing error codes. Treat CPL_ERR_KEEPALV_NEG_ADVICE as
negative advice and not a fatal error. MFC after: 3 days
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/cxgbe/common/t4_msg.h2
-rw-r--r--sys/dev/cxgbe/tom/t4_connect.c2
-rw-r--r--sys/dev/cxgbe/tom/t4_cpl_io.c3
-rw-r--r--sys/dev/cxgbe/tom/t4_listen.c3
-rw-r--r--sys/dev/cxgbe/tom/t4_tom.c9
-rw-r--r--sys/dev/cxgbe/tom/t4_tom.h1
6 files changed, 15 insertions, 5 deletions
diff --git a/sys/dev/cxgbe/common/t4_msg.h b/sys/dev/cxgbe/common/t4_msg.h
index 5bd3cef..92f760b 100644
--- a/sys/dev/cxgbe/common/t4_msg.h
+++ b/sys/dev/cxgbe/common/t4_msg.h
@@ -159,6 +159,8 @@ enum CPL_error {
CPL_ERR_KEEPALIVE_TIMEDOUT = 34,
CPL_ERR_RTX_NEG_ADVICE = 35,
CPL_ERR_PERSIST_NEG_ADVICE = 36,
+ CPL_ERR_KEEPALV_NEG_ADVICE = 37,
+ CPL_ERR_WAIT_ARP_RPL = 41,
CPL_ERR_ABORT_FAILED = 42,
CPL_ERR_IWARP_FLM = 50,
};
diff --git a/sys/dev/cxgbe/tom/t4_connect.c b/sys/dev/cxgbe/tom/t4_connect.c
index b46b5ce..17ed1d3 100644
--- a/sys/dev/cxgbe/tom/t4_connect.c
+++ b/sys/dev/cxgbe/tom/t4_connect.c
@@ -196,7 +196,7 @@ do_act_open_rpl(struct sge_iq *iq, const struct rss_header *rss,
CTR3(KTR_CXGBE, "%s: atid %u, status %u ", __func__, atid, status);
/* Ignore negative advice */
- if (status == CPL_ERR_RTX_NEG_ADVICE)
+ if (negative_advice(status))
return (0);
free_atid(sc, atid);
diff --git a/sys/dev/cxgbe/tom/t4_cpl_io.c b/sys/dev/cxgbe/tom/t4_cpl_io.c
index 6ae1ec4..9aead9f 100644
--- a/sys/dev/cxgbe/tom/t4_cpl_io.c
+++ b/sys/dev/cxgbe/tom/t4_cpl_io.c
@@ -1018,8 +1018,7 @@ do_abort_req(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m)
KASSERT(toep->tid == tid, ("%s: toep tid mismatch", __func__));
- if (cpl->status == CPL_ERR_RTX_NEG_ADVICE ||
- cpl->status == CPL_ERR_PERSIST_NEG_ADVICE) {
+ if (negative_advice(cpl->status)) {
CTR4(KTR_CXGBE, "%s: negative advice %d for tid %d (0x%x)",
__func__, cpl->status, tid, toep->flags);
return (0); /* Ignore negative advice */
diff --git a/sys/dev/cxgbe/tom/t4_listen.c b/sys/dev/cxgbe/tom/t4_listen.c
index 4ca1e97..fca9fc7 100644
--- a/sys/dev/cxgbe/tom/t4_listen.c
+++ b/sys/dev/cxgbe/tom/t4_listen.c
@@ -835,8 +835,7 @@ do_abort_req_synqe(struct sge_iq *iq, const struct rss_header *rss,
CTR6(KTR_CXGBE, "%s: tid %u, synqe %p (0x%x), lctx %p, status %d",
__func__, tid, synqe, synqe->flags, synqe->lctx, cpl->status);
- if (cpl->status == CPL_ERR_RTX_NEG_ADVICE ||
- cpl->status == CPL_ERR_PERSIST_NEG_ADVICE)
+ if (negative_advice(cpl->status))
return (0); /* Ignore negative advice */
INP_WLOCK(inp);
diff --git a/sys/dev/cxgbe/tom/t4_tom.c b/sys/dev/cxgbe/tom/t4_tom.c
index d46eeaf..64e8b26 100644
--- a/sys/dev/cxgbe/tom/t4_tom.c
+++ b/sys/dev/cxgbe/tom/t4_tom.c
@@ -547,6 +547,15 @@ set_tcpddp_ulp_mode(struct toepcb *toep)
toep->ddp_score = DDP_LOW_SCORE;
}
+int
+negative_advice(int status)
+{
+
+ return (status == CPL_ERR_RTX_NEG_ADVICE ||
+ status == CPL_ERR_PERSIST_NEG_ADVICE ||
+ status == CPL_ERR_KEEPALV_NEG_ADVICE);
+}
+
static int
alloc_tid_tabs(struct tid_info *t)
{
diff --git a/sys/dev/cxgbe/tom/t4_tom.h b/sys/dev/cxgbe/tom/t4_tom.h
index 17c79a9..d0fbbd2 100644
--- a/sys/dev/cxgbe/tom/t4_tom.h
+++ b/sys/dev/cxgbe/tom/t4_tom.h
@@ -236,6 +236,7 @@ uint64_t calc_opt0(struct socket *, struct port_info *, struct l2t_entry *,
int, int, int, int);
uint32_t select_ntuple(struct port_info *, struct l2t_entry *, uint32_t);
void set_tcpddp_ulp_mode(struct toepcb *);
+int negative_advice(int);
struct clip_entry *hold_lip(struct tom_data *, struct in6_addr *);
void release_lip(struct tom_data *, struct clip_entry *);
OpenPOWER on IntegriCloud