Message ID | 1828884A29C6694DAF28B7E6B8A8237302104E@ORSMSX101.amr.corp.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index 7577c1a..67c7da4 100644 --- a/drivers/infiniband/core/cm.c +++ b/drivers/infiniband/core/cm.c @@ -889,6 +889,8 @@ retest: break; case IB_CM_ESTABLISHED: spin_unlock_irq(&cm_id_priv->lock); + if (cm_id_priv->qp_type == IB_QPT_XRC_TGT) + break; ib_send_cm_dreq(cm_id, NULL, 0); goto retest; case IB_CM_DREQ_SENT:
Because an XRC TGT QP can end up being shared among multiple processes, don't have the ib_cm automatically send a DREQ when the user space process that owns the ib_cm_id exits. Disconnect can be initiated by the user directly, otherwise, the owner of the XRC INI QP controls the connection. Note that as a result of the process exiting, the ib_cm will stop tracking the XRC connection on the target side. For the purposes of disconnecting, this isn't a big deal. The ib_cm will respond to the DREQ appropriately. For other messages, mainly LAP, the cm will reject the request, since there's no one available to route the request to. Signed-off-by: Sean Hefty <sean.hefty@intel.com> --- This is a simple way of handling XRX TGT QPs. A more complex method can always be added later if and when it is ever necessary. drivers/infiniband/core/cm.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html