RE: [PATCH rdma-next 10/13] RDMA/mana_ib: implement req_notify_cq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Subject: [PATCH rdma-next 10/13] RDMA/mana_ib: implement req_notify_cq
> 
> From: Konstantin Taranov <kotaranov@xxxxxxxxxxxxx>
> 
> Arm a CQ when req_notify_cq is called.
> 
> Signed-off-by: Konstantin Taranov <kotaranov@xxxxxxxxxxxxx>
> Reviewed-by: Shiraz Saleem <shirazsaleem@xxxxxxxxxxxxx>

Reviewed-by: Long Li <longli@xxxxxxxxxxxxx>

> ---
>  drivers/infiniband/hw/mana/cq.c                 | 12 ++++++++++++
>  drivers/infiniband/hw/mana/device.c             |  1 +
>  drivers/infiniband/hw/mana/mana_ib.h            |  2 ++
>  drivers/net/ethernet/microsoft/mana/gdma_main.c |  1 +
>  4 files changed, 16 insertions(+)
> 
> diff --git a/drivers/infiniband/hw/mana/cq.c b/drivers/infiniband/hw/mana/cq.c
> index d26d82d..82f1462 100644
> --- a/drivers/infiniband/hw/mana/cq.c
> +++ b/drivers/infiniband/hw/mana/cq.c
> @@ -168,3 +168,15 @@ void mana_ib_remove_cq_cb(struct mana_ib_dev
> *mdev, struct mana_ib_cq *cq)
>  	kfree(gc->cq_table[cq->queue.id]);
>  	gc->cq_table[cq->queue.id] = NULL;
>  }
> +
> +int mana_ib_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags) {
> +	struct mana_ib_cq *cq = container_of(ibcq, struct mana_ib_cq, ibcq);
> +	struct gdma_queue *gdma_cq = cq->queue.kmem;
> +
> +	if (!gdma_cq)
> +		return -EINVAL;
> +
> +	mana_gd_ring_cq(gdma_cq, SET_ARM_BIT);
> +	return 0;
> +}
> diff --git a/drivers/infiniband/hw/mana/device.c
> b/drivers/infiniband/hw/mana/device.c
> index 1da86c3..63e12c3 100644
> --- a/drivers/infiniband/hw/mana/device.c
> +++ b/drivers/infiniband/hw/mana/device.c
> @@ -47,6 +47,7 @@ static const struct ib_device_ops mana_ib_dev_ops = {
>  	.query_pkey = mana_ib_query_pkey,
>  	.query_port = mana_ib_query_port,
>  	.reg_user_mr = mana_ib_reg_user_mr,
> +	.req_notify_cq = mana_ib_arm_cq,
> 
>  	INIT_RDMA_OBJ_SIZE(ib_ah, mana_ib_ah, ibah),
>  	INIT_RDMA_OBJ_SIZE(ib_cq, mana_ib_cq, ibcq), diff --git
> a/drivers/infiniband/hw/mana/mana_ib.h
> b/drivers/infiniband/hw/mana/mana_ib.h
> index 6265c39..bd34ad6 100644
> --- a/drivers/infiniband/hw/mana/mana_ib.h
> +++ b/drivers/infiniband/hw/mana/mana_ib.h
> @@ -595,4 +595,6 @@ int mana_ib_post_recv(struct ib_qp *ibqp, const struct
> ib_recv_wr *wr,
>  		      const struct ib_recv_wr **bad_wr);  int
> mana_ib_post_send(struct ib_qp *ibqp, const struct ib_send_wr *wr,
>  		      const struct ib_send_wr **bad_wr);
> +
> +int mana_ib_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags);
>  #endif
> diff --git a/drivers/net/ethernet/microsoft/mana/gdma_main.c
> b/drivers/net/ethernet/microsoft/mana/gdma_main.c
> index 409e4e8..823f7e7 100644
> --- a/drivers/net/ethernet/microsoft/mana/gdma_main.c
> +++ b/drivers/net/ethernet/microsoft/mana/gdma_main.c
> @@ -344,6 +344,7 @@ void mana_gd_ring_cq(struct gdma_queue *cq, u8
> arm_bit)
>  	mana_gd_ring_doorbell(gc, cq->gdma_dev->doorbell, cq->type, cq->id,
>  			      head, arm_bit);
>  }
> +EXPORT_SYMBOL_NS(mana_gd_ring_cq, NET_MANA);
> 
>  static void mana_gd_process_eqe(struct gdma_queue *eq)  {
> --
> 2.43.0






[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux