|
@@ -1647,6 +1647,15 @@ static inline int act_open_has_tid(int status)
|
|
status != CPL_ERR_ARP_MISS;
|
|
status != CPL_ERR_ARP_MISS;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/* Returns whether a CPL status conveys negative advice.
|
|
|
|
+ */
|
|
|
|
+static int is_neg_adv(unsigned int status)
|
|
|
|
+{
|
|
|
|
+ return status == CPL_ERR_RTX_NEG_ADVICE ||
|
|
|
|
+ status == CPL_ERR_PERSIST_NEG_ADVICE ||
|
|
|
|
+ status == CPL_ERR_KEEPALV_NEG_ADVICE;
|
|
|
|
+}
|
|
|
|
+
|
|
#define ACT_OPEN_RETRY_COUNT 2
|
|
#define ACT_OPEN_RETRY_COUNT 2
|
|
|
|
|
|
static int import_ep(struct c4iw_ep *ep, int iptype, __u8 *peer_ip,
|
|
static int import_ep(struct c4iw_ep *ep, int iptype, __u8 *peer_ip,
|
|
@@ -1835,7 +1844,7 @@ static int act_open_rpl(struct c4iw_dev *dev, struct sk_buff *skb)
|
|
PDBG("%s ep %p atid %u status %u errno %d\n", __func__, ep, atid,
|
|
PDBG("%s ep %p atid %u status %u errno %d\n", __func__, ep, atid,
|
|
status, status2errno(status));
|
|
status, status2errno(status));
|
|
|
|
|
|
- if (status == CPL_ERR_RTX_NEG_ADVICE) {
|
|
|
|
|
|
+ if (is_neg_adv(status)) {
|
|
printk(KERN_WARNING MOD "Connection problems for atid %u\n",
|
|
printk(KERN_WARNING MOD "Connection problems for atid %u\n",
|
|
atid);
|
|
atid);
|
|
return 0;
|
|
return 0;
|
|
@@ -2265,15 +2274,6 @@ static int peer_close(struct c4iw_dev *dev, struct sk_buff *skb)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-/*
|
|
|
|
- * Returns whether an ABORT_REQ_RSS message is a negative advice.
|
|
|
|
- */
|
|
|
|
-static int is_neg_adv_abort(unsigned int status)
|
|
|
|
-{
|
|
|
|
- return status == CPL_ERR_RTX_NEG_ADVICE ||
|
|
|
|
- status == CPL_ERR_PERSIST_NEG_ADVICE;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static int peer_abort(struct c4iw_dev *dev, struct sk_buff *skb)
|
|
static int peer_abort(struct c4iw_dev *dev, struct sk_buff *skb)
|
|
{
|
|
{
|
|
struct cpl_abort_req_rss *req = cplhdr(skb);
|
|
struct cpl_abort_req_rss *req = cplhdr(skb);
|
|
@@ -2287,7 +2287,7 @@ static int peer_abort(struct c4iw_dev *dev, struct sk_buff *skb)
|
|
unsigned int tid = GET_TID(req);
|
|
unsigned int tid = GET_TID(req);
|
|
|
|
|
|
ep = lookup_tid(t, tid);
|
|
ep = lookup_tid(t, tid);
|
|
- if (is_neg_adv_abort(req->status)) {
|
|
|
|
|
|
+ if (is_neg_adv(req->status)) {
|
|
PDBG("%s neg_adv_abort ep %p tid %u\n", __func__, ep,
|
|
PDBG("%s neg_adv_abort ep %p tid %u\n", __func__, ep,
|
|
ep->hwtid);
|
|
ep->hwtid);
|
|
return 0;
|
|
return 0;
|
|
@@ -3570,7 +3570,7 @@ static int peer_abort_intr(struct c4iw_dev *dev, struct sk_buff *skb)
|
|
kfree_skb(skb);
|
|
kfree_skb(skb);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
- if (is_neg_adv_abort(req->status)) {
|
|
|
|
|
|
+ if (is_neg_adv(req->status)) {
|
|
PDBG("%s neg_adv_abort ep %p tid %u\n", __func__, ep,
|
|
PDBG("%s neg_adv_abort ep %p tid %u\n", __func__, ep,
|
|
ep->hwtid);
|
|
ep->hwtid);
|
|
kfree_skb(skb);
|
|
kfree_skb(skb);
|