[PATCH for-rc] RDMA/cm: Do not send REJ when remote_id is unknown

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In cm_destroy_id(), when the cm_id state is IB_CM_REQ_SENT or
IB_CM_MRA_REQ_RCVD, an attempt is made to send a REJ with
IB_CM_REJ_TIMEOUT as the reject reason.

However, in said states, we have no remote_id. For the REQ_SENT case,
we simply haven't received anything from our peer, for the
MRA_REQ_RCVD case, the cm_rma_handler() doesn't pick up the remote_id.

Therefore, it is no reason to send this REJ, since it simply will be
tossed at the peer's CM layer (if it reaches it). If running in CX-3
virtualized and having the pr_debug enabled in the mlx4_ib driver, we
will see:

mlx4_ib_demux_cm_handler: Couldn't find an entry for pv_cm_id 0x0

because the proxy de-muxer is unable to determine which slave this MAD
packet should be sent to.

Signed-off-by: Håkon Bugge <haakon.bugge@xxxxxxxxxx>
---
 drivers/infiniband/core/cm.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index 4794113ecd59..ed80e5b56e2b 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -1058,10 +1058,6 @@ static void cm_destroy_id(struct ib_cm_id *cm_id, int err)
 	case IB_CM_REQ_SENT:
 	case IB_CM_MRA_REQ_RCVD:
 		ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg);
-		cm_send_rej_locked(cm_id_priv, IB_CM_REJ_TIMEOUT,
-				   &cm_id_priv->id.device->node_guid,
-				   sizeof(cm_id_priv->id.device->node_guid),
-				   NULL, 0);
 		break;
 	case IB_CM_REQ_RCVD:
 		if (err == -ENOMEM) {
-- 
2.20.1




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux