diff options
author | Sean Hefty <sean.hefty@intel.com> | 2011-05-31 09:30:46 +0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2011-10-13 20:42:06 +0400 |
commit | 2622e18ef407a8e8e3ddc3d6f0c77b756c493798 (patch) | |
tree | 9efa00db02370ff8da639f83eb397f017fd94fe2 /drivers | |
parent | 18c441a6c3741991bfb87a3c6c541d30f0eb9c7c (diff) | |
download | linux-2622e18ef407a8e8e3ddc3d6f0c77b756c493798.tar.xz |
IB/cm: Do not automatically disconnect XRC TGT QPs
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
userspace 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>
Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/infiniband/core/cm.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index 42a7a9bae44e..4104ea2427c2 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: |