RDMA/hns: Add or remove CQ's restrack attributes
authorWenpeng Liang <liangwenpeng@huawei.com>
Mon, 22 Aug 2022 10:44:50 +0000 (18:44 +0800)
committerLeon Romanovsky <leonro@nvidia.com>
Tue, 23 Aug 2022 08:34:51 +0000 (11:34 +0300)
Remove the resttrack attributes from the queue context held by ROCEE, and
add the resttrack attributes from the queue information maintained by the
driver.

For example:

$ rdma res show cq dev hns_0 cqn 14 -dd -jp
[ {
        "ifindex": 4,
        "ifname": "hns_0",
        "cqn": 14,
        "cqe": 127,
        "users": 1,
        "adaptive-moderation": false,
        "ctxn": 8,
        "pid": 1524,
        "comm": "ib_send_bw"
    },
    "drv_cq_depth": 128,
    "drv_cons_index": 0,
    "drv_cqe_size": 32,
    "drv_arm_sn": 1
}

Link: https://lore.kernel.org/r/20220822104455.2311053-3-liangwenpeng@huawei.com
Signed-off-by: Wenpeng Liang <liangwenpeng@huawei.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/hns/hns_roce_restrack.c

index 83417be..2e82997 100644 (file)
@@ -9,72 +9,25 @@
 #include "hns_roce_device.h"
 #include "hns_roce_hw_v2.h"
 
-static int hns_roce_fill_cq(struct sk_buff *msg,
-                           struct hns_roce_v2_cq_context *context)
-{
-       if (rdma_nl_put_driver_u32(msg, "state",
-                                  hr_reg_read(context, CQC_ARM_ST)))
-
-               goto err;
-
-       if (rdma_nl_put_driver_u32(msg, "ceqn",
-                                  hr_reg_read(context, CQC_CEQN)))
-               goto err;
-
-       if (rdma_nl_put_driver_u32(msg, "cqn",
-                                  hr_reg_read(context, CQC_CQN)))
-               goto err;
-
-       if (rdma_nl_put_driver_u32(msg, "hopnum",
-                                  hr_reg_read(context, CQC_CQE_HOP_NUM)))
-               goto err;
-
-       if (rdma_nl_put_driver_u32(msg, "pi",
-                                  hr_reg_read(context, CQC_CQ_PRODUCER_IDX)))
-               goto err;
-
-       if (rdma_nl_put_driver_u32(msg, "ci",
-                                  hr_reg_read(context, CQC_CQ_CONSUMER_IDX)))
-               goto err;
-
-       if (rdma_nl_put_driver_u32(msg, "coalesce",
-                                  hr_reg_read(context, CQC_CQ_MAX_CNT)))
-               goto err;
-
-       if (rdma_nl_put_driver_u32(msg, "period",
-                                  hr_reg_read(context, CQC_CQ_PERIOD)))
-               goto err;
-
-       if (rdma_nl_put_driver_u32(msg, "cnt",
-                                  hr_reg_read(context, CQC_CQE_CNT)))
-               goto err;
-
-       return 0;
-
-err:
-       return -EMSGSIZE;
-}
-
 int hns_roce_fill_res_cq_entry(struct sk_buff *msg, struct ib_cq *ib_cq)
 {
-       struct hns_roce_dev *hr_dev = to_hr_dev(ib_cq->device);
        struct hns_roce_cq *hr_cq = to_hr_cq(ib_cq);
-       struct hns_roce_v2_cq_context context;
        struct nlattr *table_attr;
-       int ret;
-
-       if (!hr_dev->hw->query_cqc)
-               return -EINVAL;
-
-       ret = hr_dev->hw->query_cqc(hr_dev, hr_cq->cqn, &context);
-       if (ret)
-               return -EINVAL;
 
        table_attr = nla_nest_start(msg, RDMA_NLDEV_ATTR_DRIVER);
        if (!table_attr)
                return -EMSGSIZE;
 
-       if (hns_roce_fill_cq(msg, &context))
+       if (rdma_nl_put_driver_u32(msg, "cq_depth", hr_cq->cq_depth))
+               goto err;
+
+       if (rdma_nl_put_driver_u32(msg, "cons_index", hr_cq->cons_index))
+               goto err;
+
+       if (rdma_nl_put_driver_u32(msg, "cqe_size", hr_cq->cqe_size))
+               goto err;
+
+       if (rdma_nl_put_driver_u32(msg, "arm_sn", hr_cq->arm_sn))
                goto err;
 
        nla_nest_end(msg, table_attr);