diff options
author | Sean Hefty <sean.hefty@intel.com> | 2011-05-31 01:30:46 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2011-10-13 12:42:06 -0400 |
commit | 2622e18ef407a8e8e3ddc3d6f0c77b756c493798 (patch) | |
tree | 9efa00db02370ff8da639f83eb397f017fd94fe2 /drivers/infiniband | |
parent | 18c441a6c3741991bfb87a3c6c541d30f0eb9c7c (diff) |
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/infiniband')
-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: | |||
889 | break; | 889 | break; |
890 | case IB_CM_ESTABLISHED: | 890 | case IB_CM_ESTABLISHED: |
891 | spin_unlock_irq(&cm_id_priv->lock); | 891 | spin_unlock_irq(&cm_id_priv->lock); |
892 | if (cm_id_priv->qp_type == IB_QPT_XRC_TGT) | ||
893 | break; | ||
892 | ib_send_cm_dreq(cm_id, NULL, 0); | 894 | ib_send_cm_dreq(cm_id, NULL, 0); |
893 | goto retest; | 895 | goto retest; |
894 | case IB_CM_DREQ_SENT: | 896 | case IB_CM_DREQ_SENT: |