aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorSean Hefty <sean.hefty@intel.com>2011-05-23 22:42:29 -0400
committerRoland Dreier <roland@purestorage.com>2011-10-13 12:14:31 -0400
commit418d51307d102e72e745031adb4f5ba0ddb646e2 (patch)
tree929f9e9331541535013a302e8ff9432480ae635e /include
parent96104eda01695a26da2c8f7423ec0ba3509c8c97 (diff)
RDMA/core: Add XRC SRQ type
XRC ("eXtended reliable connected") is an IB transport that provides better scalability by allowing senders to specify which shared receive queue (SRQ) should be used to receive a message, which essentially allows one transport context (QP connection) to serve multiple destinations (as long as they share an adapter, of course). XRC defines SRQs that are specifically used by XRC connections. Expand the SRQ code to support XRC SRQs. An XRC SRQ is currently restricted to only XRC use according to the IB XRC Annex. Portions of this patch were derived from work by Jack Morgenstein <jackm@dev.mellanox.co.il>. Signed-off-by: Sean Hefty <sean.hefty@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'include')
-rw-r--r--include/rdma/ib_verbs.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index d0c2dc034054..516647a22135 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -524,7 +524,8 @@ enum ib_cq_notify_flags {
524}; 524};
525 525
526enum ib_srq_type { 526enum ib_srq_type {
527 IB_SRQT_BASIC 527 IB_SRQT_BASIC,
528 IB_SRQT_XRC
528}; 529};
529 530
530enum ib_srq_attr_mask { 531enum ib_srq_attr_mask {
@@ -543,6 +544,13 @@ struct ib_srq_init_attr {
543 void *srq_context; 544 void *srq_context;
544 struct ib_srq_attr attr; 545 struct ib_srq_attr attr;
545 enum ib_srq_type srq_type; 546 enum ib_srq_type srq_type;
547
548 union {
549 struct {
550 struct ib_xrcd *xrcd;
551 struct ib_cq *cq;
552 } xrc;
553 } ext;
546}; 554};
547 555
548struct ib_qp_cap { 556struct ib_qp_cap {
@@ -895,6 +903,14 @@ struct ib_srq {
895 void *srq_context; 903 void *srq_context;
896 enum ib_srq_type srq_type; 904 enum ib_srq_type srq_type;
897 atomic_t usecnt; 905 atomic_t usecnt;
906
907 union {
908 struct {
909 struct ib_xrcd *xrcd;
910 struct ib_cq *cq;
911 u32 srq_num;
912 } xrc;
913 } ext;
898}; 914};
899 915
900struct ib_qp { 916struct ib_qp {