]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RDMA/mana_ib: extend query device
authorKonstantin Taranov <kotaranov@microsoft.com>
Thu, 30 May 2024 11:55:17 +0000 (04:55 -0700)
committerLeon Romanovsky <leon@kernel.org>
Sun, 2 Jun 2024 08:50:15 +0000 (11:50 +0300)
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>
Link: https://lore.kernel.org/r/1717070117-1234-3-git-send-email-kotaranov@linux.microsoft.com
Reviewed-by: Long Li <longli@microsoft.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/mana/main.c
drivers/infiniband/hw/mana/mana_ib.h

index 6bd60729ea32d1955a70dbd2e5bb40806021a922..365b4f174a83cdcfdbf9e8b3e212119d2ad9cecc 100644 (file)
@@ -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;
 }
index d29dee7b5c7fcb5c2deb15b88b1a5853848635f0..60bc548ba4be7e237f826e76ccaf00ac54ad5885 100644 (file)
  */
 #define MANA_IB_MAX_MR         0xFFFFFFu
 
+/*
+ * The CA timeout is approx. 260ms (4us * 2^(DELAY))
+ */
+#define MANA_CA_ACK_DELAY      16
+
 struct mana_ib_adapter_caps {
        u32 max_sq_id;
        u32 max_rq_id;