diff options
author | Christoph Hellwig <hch@lst.de> | 2016-05-03 19:01:09 +0300 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2016-05-13 20:37:19 +0300 |
commit | a060b5629ab066dd1d321430eeb96f70939a1790 (patch) | |
tree | 403dd22e8affcb2c92415065ceeac894374d7af3 /include/rdma/ib_verbs.h | |
parent | d4a85c309b33f93cb211f2fa9d26fa77d0bb7b5e (diff) | |
download | linux-a060b5629ab066dd1d321430eeb96f70939a1790.tar.xz |
IB/core: generic RDMA READ/WRITE API
This supports both manual mapping of lots of SGEs, as well as using MRs
from the QP's MR pool, for iWarp or other cases where it's more optimal.
For now, MRs are only used for iWARP transports. The user of the RDMA-RW
API must allocate the QP MR pool as well as size the SQ accordingly.
Thanks to Steve Wise for testing, fixing and rewriting the iWarp support,
and to Sagi Grimberg for ideas, reviews and fixes.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'include/rdma/ib_verbs.h')
-rw-r--r-- | include/rdma/ib_verbs.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 3f66647749ca..dd8e15dfc1a8 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -931,6 +931,13 @@ struct ib_qp_cap { u32 max_send_sge; u32 max_recv_sge; u32 max_inline_data; + + /* + * Maximum number of rdma_rw_ctx structures in flight at a time. + * ib_create_qp() will calculate the right amount of neededed WRs + * and MRs based on this. + */ + u32 max_rdma_ctxs; }; enum ib_sig_type { @@ -1002,7 +1009,11 @@ struct ib_qp_init_attr { enum ib_sig_type sq_sig_type; enum ib_qp_type qp_type; enum ib_qp_create_flags create_flags; - u8 port_num; /* special QP types only */ + + /* + * Only needed for special QP types, or when using the RW API. + */ + u8 port_num; }; struct ib_qp_open_attr { @@ -1423,6 +1434,7 @@ struct ib_qp { struct ib_cq *recv_cq; spinlock_t mr_lock; int mrs_used; + struct list_head rdma_mrs; struct ib_srq *srq; struct ib_xrcd *xrcd; /* XRC TGT QPs only */ struct list_head xrcd_list; |