diff mbox series

iw_cxgb4: only reconnect with MPAv1 if the peer aborts

Message ID 20181110164247.267EB22775@smtp.opengridcomputing.com (mailing list archive)
State Accepted
Commit 9828ca654b52848e7eb7dcc9b0994ff130dd4546
Delegated to: Jason Gunthorpe
Headers show
Series iw_cxgb4: only reconnect with MPAv1 if the peer aborts | expand

Commit Message

Steve Wise Nov. 10, 2018, 1:27 p.m. UTC
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>
---
 drivers/infiniband/hw/cxgb4/cm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Jason Gunthorpe Nov. 21, 2018, 11:50 p.m. UTC | #1
On Sat, Nov 10, 2018 at 05:27:39AM -0800, Steve Wise wrote:
> 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>
> ---
>  drivers/infiniband/hw/cxgb4/cm.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

Applied to for-next

Thanks,
Jason
diff mbox series

Patch

diff --git a/drivers/infiniband/hw/cxgb4/cm.c b/drivers/infiniband/hw/cxgb4/cm.c
index 615413bd3e8d..659175c9ae91 100644
--- a/drivers/infiniband/hw/cxgb4/cm.c
+++ b/drivers/infiniband/hw/cxgb4/cm.c
@@ -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 {
 			/*