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