Re: [PATCH rdma-core 10/11] libbnxtre: Add support for SRQ in user lib

Leon Romanovsky
2017-01-31T12:42:28Z

[-- Attachment #1: Type: text/plain, Size: 2402 bytes --]

On Sat, Jan 28, 2017 at 05:13:41PM -0500, Devesh Sharma wrote:
> This patch adds support for shared receive
> queue. Following are the changes:
> - Add ABI for user/kernel information exchange.
> - Add function to handle SRQ ARMing and DB-ring.
> - Add function to create/destroy SRQ.
> - Add function to query/modify SRQ.
> - Add function to post RQE on a SRQ.
>
> Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
> Signed-off-by: Somnath Kotur <somnath.kotur-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
> Signed-off-by: Selvin Xavier <selvin.xavier-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
> Signed-off-by: Devesh Sharma <devesh.sharma-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>
> ---
> providers/bnxtre/abi.h | 27 +++++
> providers/bnxtre/db.c | 18 ++++
> providers/bnxtre/main.h | 20 +++-
> providers/bnxtre/verbs.c | 261 +++++++++++++++++++++++++++++++++++++++++------
> 4 files changed, 288 insertions(+), 38 deletions(-)
>
> diff --git a/providers/bnxtre/abi.h b/providers/bnxtre/abi.h
> index 451af08..e6fb9e4 100644
> --- a/providers/bnxtre/abi.h
> +++ b/providers/bnxtre/abi.h
> @@ -216,6 +216,7 @@ struct bnxt_re_mr_resp {
> struct ibv_reg_mr_resp resp;
> };
>
> +/* CQ */
> struct bnxt_re_cq_req {
> struct ibv_create_cq cmd;
> __u64 cq_va;
> @@ -263,6 +264,7 @@ struct bnxt_re_term_cqe {
> __u64 rsvd1;
> };
>
> +/* QP */
> struct bnxt_re_qp_req {
> struct ibv_create_qp cmd;
> __u64 qpsva;
> @@ -354,6 +356,19 @@ struct bnxt_re_rqe {
> __u64 rsvd[2];
> };
>
> +/* SRQ */
> +struct bnxt_re_srq_req {
> + struct ibv_create_srq cmd;
> + __u64 srqva;
> + __u64 srq_handle;
> +};
> +
> +struct bnxt_re_srq_resp {
> + struct ibv_create_srq_resp resp;
> + __u32 srqid;
> + __u32 rsvd;
> +};
> +
> struct bnxt_re_srqe {
> __u32 srq_tag; /* 20 bits are valid */
> __u32 rsvd1;
> @@ -384,6 +399,18 @@ static inline uint32_t bnxt_re_get_rqe_hdr_sz(void)
> return sizeof(struct bnxt_re_brqe) + sizeof(struct bnxt_re_rqe);
> }
>
> +static inline uint32_t bnxt_re_get_srqe_hdr_sz(void)
> +{
> + return sizeof(struct bnxt_re_brqe) + sizeof(struct bnxt_re_srqe);
> +}
> +
> +static inline uint32_t bnxt_re_get_srqe_sz(void)
> +{
> + return sizeof(struct bnxt_re_brqe) +
> + sizeof(struct bnxt_re_srqe) +

You introduced the inline function exactly for this.

> + BNXT_RE_MAX_INLINE_SIZE;
> +}
> +

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]