summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/nes/nes_verbs.h
diff options
context:
space:
mode:
authorDon Wood <donald.e.wood@intel.com>2009-09-05 20:36:37 -0700
committerRoland Dreier <rolandd@cisco.com>2009-09-05 20:36:37 -0700
commit873fcdd4bfc75880888a7d148a71d70ed87c9ebf (patch)
treed64569366205a1c42be20806bb56e6b7885fe196 /drivers/infiniband/hw/nes/nes_verbs.h
parentc4c3f279cd8e9cc1d3e2f364a27beadb2e69cda8 (diff)
RDMA/nes: Allocate work item for disconnect event handling
The code currently has a work structure in the QP. This requires a lock and a pending flag to ensure there is never more than one request active. When two events happen quickly (such as FIN and LLP CLOSE), it causes unnecessary timeouts since the second one is dropped. This fix allocates memory for the work request so the second one can be queued. A lock is removed since it is no longer needed. Signed-off-by: Don Wood <donald.e.wood@intel.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband/hw/nes/nes_verbs.h')
-rw-r--r--drivers/infiniband/hw/nes/nes_verbs.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/nes/nes_verbs.h b/drivers/infiniband/hw/nes/nes_verbs.h
index 41c07f29f7c..7df34fea288 100644
--- a/drivers/infiniband/hw/nes/nes_verbs.h
+++ b/drivers/infiniband/hw/nes/nes_verbs.h
@@ -119,6 +119,11 @@ struct nes_wq {
spinlock_t lock;
};
+struct disconn_work {
+ struct work_struct work;
+ struct nes_qp *nesqp;
+};
+
struct iw_cm_id;
struct ietf_mpa_frame;
@@ -127,7 +132,6 @@ struct nes_qp {
void *allocated_buffer;
struct iw_cm_id *cm_id;
struct workqueue_struct *wq;
- struct work_struct disconn_work;
struct nes_cq *nesscq;
struct nes_cq *nesrcq;
struct nes_pd *nespd;
@@ -165,7 +169,6 @@ struct nes_qp {
u8 hw_iwarp_state;
u8 flush_issued;
u8 hw_tcp_state;
- u8 disconn_pending;
u8 destroyed;
};
#endif /* NES_VERBS_H */