summaryrefslogtreecommitdiff
path: root/drivers/infiniband/hw/cxgb3/iwch_cm.h
diff options
context:
space:
mode:
authorSteve Wise <swise@opengridcomputing.com>2008-04-30 00:46:51 +0400
committerRoland Dreier <rolandd@cisco.com>2008-04-30 00:46:51 +0400
commit989a1780698c65dfe093a6aa89ceeff84c31f528 (patch)
tree9fe0ca81bfbdbc9f7618fc6b09c1c0c9e3234057 /drivers/infiniband/hw/cxgb3/iwch_cm.h
parente463c7b197dbe64b8a99b0612c65f286937e5bf1 (diff)
downloadlinux-989a1780698c65dfe093a6aa89ceeff84c31f528.tar.xz
RDMA/cxgb3: Correctly serialize peer abort path
Open MPI and other stress testing exposed a few bad bugs in handling aborts in the middle of a normal close. Fix these by: - serializing abort reply and peer abort processing with disconnect processing - warning (and ignoring) if ep timer is stopped when it wasn't running - cleaning up disconnect path to correctly deal with aborting and dead endpoints - in iwch_modify_qp(), taking a ref on the ep before releasing the qp lock if iwch_ep_disconnect() will be called. The ref is dropped after calling disconnect. Signed-off-by: Steve Wise <swise@opengridcomputing.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/cxgb3/iwch_cm.h')
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_cm.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/cxgb3/iwch_cm.h b/drivers/infiniband/hw/cxgb3/iwch_cm.h
index 2bb7fbdb3ff4..a2f1b787d970 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_cm.h
+++ b/drivers/infiniband/hw/cxgb3/iwch_cm.h
@@ -56,6 +56,7 @@
#define put_ep(ep) { \
PDBG("put_ep (via %s:%u) ep %p refcnt %d\n", __func__, __LINE__, \
ep, atomic_read(&((ep)->kref.refcount))); \
+ WARN_ON(atomic_read(&((ep)->kref.refcount)) < 1); \
kref_put(&((ep)->kref), __free_ep); \
}