Message ID | 1716469137-16844-3-git-send-email-kotaranov@linux.microsoft.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Fill in capabilities and guid | expand |
> Subject: [PATCH rdma-next 2/2] RDMA/mana_ib: extend query device > > From: Konstantin Taranov <kotaranov@microsoft.com> > > Fill in properties of the ib device. > Order the assignment in the order of fields in the struct ib_device_attr. > > Signed-off-by: Konstantin Taranov <kotaranov@microsoft.com> > --- > drivers/infiniband/hw/mana/main.c | 19 ++++++++++++++++--- > drivers/infiniband/hw/mana/mana_ib.h | 5 +++++ > 2 files changed, 21 insertions(+), 3 deletions(-) > > diff --git a/drivers/infiniband/hw/mana/main.c > b/drivers/infiniband/hw/mana/main.c > index 2a41135..814a61e 100644 > --- a/drivers/infiniband/hw/mana/main.c > +++ b/drivers/infiniband/hw/mana/main.c > @@ -547,14 +547,27 @@ int mana_ib_query_device(struct ib_device *ibdev, > struct ib_device_attr *props, > struct mana_ib_dev *dev = container_of(ibdev, > struct mana_ib_dev, ib_dev); > > + memset(props, 0, sizeof(*props)); > + props->max_mr_size = MANA_IB_MAX_MR_SIZE; > + props->page_size_cap = PAGE_SZ_BM; > props->max_qp = dev->adapter_caps.max_qp_count; > props->max_qp_wr = dev->adapter_caps.max_qp_wr; > + props->device_cap_flags = IB_DEVICE_RC_RNR_NAK_GEN; > + props->max_send_sge = dev->adapter_caps.max_send_sge_count; > + props->max_recv_sge = dev->adapter_caps.max_recv_sge_count; > + props->max_sge_rd = dev->adapter_caps.max_recv_sge_count; > props->max_cq = dev->adapter_caps.max_cq_count; > props->max_cqe = dev->adapter_caps.max_qp_wr; > props->max_mr = dev->adapter_caps.max_mr_count; > - props->max_mr_size = MANA_IB_MAX_MR_SIZE; > - props->max_send_sge = dev->adapter_caps.max_send_sge_count; > - props->max_recv_sge = dev->adapter_caps.max_recv_sge_count; > + props->max_pd = dev->adapter_caps.max_pd_count; > + props->max_qp_rd_atom = dev->adapter_caps.max_inbound_read_limit; > + props->max_res_rd_atom = props->max_qp_rd_atom * props->max_qp; > + props->max_qp_init_rd_atom = dev- > >adapter_caps.max_outbound_read_limit; > + props->atomic_cap = IB_ATOMIC_NONE; > + props->masked_atomic_cap = IB_ATOMIC_NONE; > + props->max_ah = INT_MAX; > + props->max_pkeys = 1; > + props->local_ca_ack_delay = MANA_CA_ACK_DELAY; > > return 0; > } > diff --git a/drivers/infiniband/hw/mana/mana_ib.h > b/drivers/infiniband/hw/mana/mana_ib.h > index 68c3b4f..1348bfb 100644 > --- a/drivers/infiniband/hw/mana/mana_ib.h > +++ b/drivers/infiniband/hw/mana/mana_ib.h > @@ -27,6 +27,11 @@ > */ > #define MANA_IB_MAX_MR 0xFFFFFFu > > +/* > + * The CA timeout is approx. 260ms > + */ > +#define MANA_CA_ACK_DELAY 16 Looks good. But can you add a comment on where 16 is coming from 260ms?
diff --git a/drivers/infiniband/hw/mana/main.c b/drivers/infiniband/hw/mana/main.c index 2a41135..814a61e 100644 --- a/drivers/infiniband/hw/mana/main.c +++ b/drivers/infiniband/hw/mana/main.c @@ -547,14 +547,27 @@ int mana_ib_query_device(struct ib_device *ibdev, struct ib_device_attr *props, struct mana_ib_dev *dev = container_of(ibdev, struct mana_ib_dev, ib_dev); + memset(props, 0, sizeof(*props)); + props->max_mr_size = MANA_IB_MAX_MR_SIZE; + props->page_size_cap = PAGE_SZ_BM; props->max_qp = dev->adapter_caps.max_qp_count; props->max_qp_wr = dev->adapter_caps.max_qp_wr; + props->device_cap_flags = IB_DEVICE_RC_RNR_NAK_GEN; + props->max_send_sge = dev->adapter_caps.max_send_sge_count; + props->max_recv_sge = dev->adapter_caps.max_recv_sge_count; + props->max_sge_rd = dev->adapter_caps.max_recv_sge_count; props->max_cq = dev->adapter_caps.max_cq_count; props->max_cqe = dev->adapter_caps.max_qp_wr; props->max_mr = dev->adapter_caps.max_mr_count; - props->max_mr_size = MANA_IB_MAX_MR_SIZE; - props->max_send_sge = dev->adapter_caps.max_send_sge_count; - props->max_recv_sge = dev->adapter_caps.max_recv_sge_count; + props->max_pd = dev->adapter_caps.max_pd_count; + props->max_qp_rd_atom = dev->adapter_caps.max_inbound_read_limit; + props->max_res_rd_atom = props->max_qp_rd_atom * props->max_qp; + props->max_qp_init_rd_atom = dev->adapter_caps.max_outbound_read_limit; + props->atomic_cap = IB_ATOMIC_NONE; + props->masked_atomic_cap = IB_ATOMIC_NONE; + props->max_ah = INT_MAX; + props->max_pkeys = 1; + props->local_ca_ack_delay = MANA_CA_ACK_DELAY; return 0; } diff --git a/drivers/infiniband/hw/mana/mana_ib.h b/drivers/infiniband/hw/mana/mana_ib.h index 68c3b4f..1348bfb 100644 --- a/drivers/infiniband/hw/mana/mana_ib.h +++ b/drivers/infiniband/hw/mana/mana_ib.h @@ -27,6 +27,11 @@ */ #define MANA_IB_MAX_MR 0xFFFFFFu +/* + * The CA timeout is approx. 260ms + */ +#define MANA_CA_ACK_DELAY 16 + struct mana_ib_adapter_caps { u32 max_sq_id; u32 max_rq_id;