RDMA/hns: Assign the value for vlan field of qp context
authorLijun Ou <oulijun@huawei.com>
Mon, 30 Jul 2018 12:20:27 +0000 (20:20 +0800)
committerJason Gunthorpe <jgg@mellanox.com>
Tue, 31 Jul 2018 02:42:44 +0000 (20:42 -0600)
This patch mainly fills the correct value into the vlan id field of qp
context as well as update the vlan field name according to the latest
hardware user manual.

Signed-off-by: Lijun Ou <oulijun@huawei.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/hns/hns_roce_hw_v2.c
drivers/infiniband/hw/hns/hns_roce_hw_v2.h

index 4fece73ee0c96e199e22a054aeb87b4ff8907a8c..b4958422af940562d77dc8b85c2baeb8e9396aff 100644 (file)
@@ -2527,10 +2527,10 @@ static void modify_qp_reset_to_init(struct ib_qp *ibqp,
                       V2_QPC_BYTE_20_RQ_SHIFT_M, V2_QPC_BYTE_20_RQ_SHIFT_S, 0);
 
        /* No VLAN need to set 0xFFF */
-       roce_set_field(context->byte_24_mtu_tc, V2_QPC_BYTE_24_VLAN_IDX_M,
-                      V2_QPC_BYTE_24_VLAN_IDX_S, 0xfff);
-       roce_set_field(qpc_mask->byte_24_mtu_tc, V2_QPC_BYTE_24_VLAN_IDX_M,
-                      V2_QPC_BYTE_24_VLAN_IDX_S, 0);
+       roce_set_field(context->byte_24_mtu_tc, V2_QPC_BYTE_24_VLAN_ID_M,
+                      V2_QPC_BYTE_24_VLAN_ID_S, 0xfff);
+       roce_set_field(qpc_mask->byte_24_mtu_tc, V2_QPC_BYTE_24_VLAN_ID_M,
+                      V2_QPC_BYTE_24_VLAN_ID_S, 0);
 
        /*
         * Set some fields in context to zero, Because the default values
@@ -3472,6 +3472,13 @@ static int hns_roce_v2_modify_qp(struct ib_qp *ibqp,
                        memcpy(src_mac, gid_attr->ndev->dev_addr, ETH_ALEN);
                }
 
+               roce_set_field(context->byte_24_mtu_tc,
+                              V2_QPC_BYTE_24_VLAN_ID_M,
+                              V2_QPC_BYTE_24_VLAN_ID_S, vlan);
+               roce_set_field(qpc_mask->byte_24_mtu_tc,
+                              V2_QPC_BYTE_24_VLAN_ID_M,
+                              V2_QPC_BYTE_24_VLAN_ID_S, 0);
+
                if (grh->sgid_index >= hr_dev->caps.gid_table_len[hr_port]) {
                        dev_err(hr_dev->dev,
                                "sgid_index(%u) too large. max is %d\n",
index f40d8c22d357a76ea99c1b127b7838537aa43f7e..5c43ba11a0bdd4f719896a63f1daf0c2f9a9903d 100644 (file)
@@ -451,8 +451,8 @@ struct hns_roce_v2_qp_context {
 #define        V2_QPC_BYTE_24_TC_S 8
 #define V2_QPC_BYTE_24_TC_M GENMASK(15, 8)
 
-#define        V2_QPC_BYTE_24_VLAN_IDX_S 16
-#define V2_QPC_BYTE_24_VLAN_IDX_M GENMASK(27, 16)
+#define        V2_QPC_BYTE_24_VLAN_ID_S 16
+#define V2_QPC_BYTE_24_VLAN_ID_M GENMASK(27, 16)
 
 #define        V2_QPC_BYTE_24_MTU_S 28
 #define V2_QPC_BYTE_24_MTU_M GENMASK(31, 28)