diff mbox

[15/20,v2] ib/cm: Do not automatically disconnect XRC TGT QPs

Message ID 1828884A29C6694DAF28B7E6B8A8237316E41A73@FMSMSX151.amr.corp.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Hefty, Sean Aug. 19, 2011, 2:14 a.m. UTC
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>
---
 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
diff mbox

Patch

diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index 42a7a9b..4104ea2 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: