RDMA/hns: Extend capability flags for HIP08_C
authorWeihang Li <liweihang@huawei.com>
Tue, 5 May 2020 10:30:06 +0000 (18:30 +0800)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 12 May 2020 23:37:06 +0000 (20:37 -0300)
12 bits is not enough for HIP08_C, so extend a new field in length of 16
bits for it.

Link: https://lore.kernel.org/r/1588674607-25337-3-git-send-email-liweihang@huawei.com
Signed-off-by: Weihang Li <liweihang@huawei.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/hns/hns_roce_device.h
drivers/infiniband/hw/hns/hns_roce_hw_v2.c
drivers/infiniband/hw/hns/hns_roce_hw_v2.h

index 5cac14d..226df20 100644 (file)
@@ -209,6 +209,8 @@ enum {
        HNS_ROCE_OPCODE_RDMA_WITH_IMM_RECEIVE   = 0x07,
 };
 
+#define HNS_ROCE_CAP_FLAGS_EX_SHIFT 12
+
 enum {
        HNS_ROCE_CAP_FLAG_REREG_MR              = BIT(0),
        HNS_ROCE_CAP_FLAG_ROCE_V1_V2            = BIT(1),
index ad9a11a..5aa56b7 100644 (file)
@@ -1887,6 +1887,9 @@ static int hns_roce_query_pf_caps(struct hns_roce_dev *hr_dev)
        caps->flags = roce_get_field(resp_c->cap_flags_num_pds,
                                     V2_QUERY_PF_CAPS_C_CAP_FLAGS_M,
                                     V2_QUERY_PF_CAPS_C_CAP_FLAGS_S);
+       caps->flags |= le16_to_cpu(resp_d->cap_flags_ex) <<
+                      HNS_ROCE_CAP_FLAGS_EX_SHIFT;
+
        caps->num_cqs = 1 << roce_get_field(resp_c->max_gid_num_cqs,
                                            V2_QUERY_PF_CAPS_C_NUM_CQS_M,
                                            V2_QUERY_PF_CAPS_C_NUM_CQS_S);
index 05bfe07..938b7b5 100644 (file)
@@ -1647,7 +1647,7 @@ struct hns_roce_query_pf_caps_c {
 struct hns_roce_query_pf_caps_d {
        __le32 wq_hop_num_max_srqs;
        __le16 srq_depth;
-       __le16 rsv;
+       __le16 cap_flags_ex;
        __le32 num_ceqs_ceq_depth;
        __le32 arm_st_aeq_depth;
        __le32 num_uars_rsv_pds;