iw_cxgb4: only reconnect with MPAv1 if the peer aborts
authorSteve Wise <swise@opengridcomputing.com>
Sat, 10 Nov 2018 13:27:39 +0000 (05:27 -0800)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 21 Nov 2018 23:15:19 +0000 (16:15 -0700)
Only retry connection setup with MPAv1 if the peer actually aborted the
connection upon receiving the MPAv2 start message.  This avoids retrying
with MPAv1 in the case where the connection was aborted due to retransmit
timeouts.

Fixes: d2fe99e86bb2 ("RDMA/cxgb4: Add support for MPAv2 Enhanced RDMA Negotiation")
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/cxgb4/cm.c

index 615413b..659175c 100644 (file)
@@ -2795,7 +2795,8 @@ static int peer_abort(struct c4iw_dev *dev, struct sk_buff *skb)
                break;
        case MPA_REQ_SENT:
                (void)stop_ep_timer(ep);
-               if (mpa_rev == 1 || (mpa_rev == 2 && ep->tried_with_mpa_v1))
+               if (status != CPL_ERR_CONN_RESET || mpa_rev == 1 ||
+                   (mpa_rev == 2 && ep->tried_with_mpa_v1))
                        connect_reply_upcall(ep, -ECONNRESET);
                else {
                        /*