]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
RDMA/hns: Add CM of vlan device support
authorLijun Ou <oulijun@huawei.com>
Sat, 22 Sep 2018 08:21:07 +0000 (16:21 +0800)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 26 Sep 2018 20:59:13 +0000 (14:59 -0600)
This patch mainly sets the vlan_id field in the WC for rdma_listen() to
work over vlan. This is required by ib_init_ah_attr_from_wc() which is
called by the CM REQ handler.

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 97ff5dae9e95cd3ff892c9068aac65c5afec2fa9..a781f6b49782fbb27be72ee5ddd3c23ef8335a39 100644 (file)
@@ -2292,7 +2292,14 @@ static int hns_roce_v2_poll_one(struct hns_roce_cq *hr_cq,
                wc->smac[5] = roce_get_field(cqe->byte_28,
                                             V2_CQE_BYTE_28_SMAC_5_M,
                                             V2_CQE_BYTE_28_SMAC_5_S);
-               wc->vlan_id = 0xffff;
+               if (roce_get_bit(cqe->byte_28, V2_CQE_BYTE_28_VID_VLD_S)) {
+                       wc->vlan_id = (u16)roce_get_field(cqe->byte_28,
+                                                         V2_CQE_BYTE_28_VID_M,
+                                                         V2_CQE_BYTE_28_VID_S);
+               } else {
+                       wc->vlan_id = 0xffff;
+               }
+
                wc->wc_flags |= (IB_WC_WITH_VLAN | IB_WC_WITH_SMAC);
                wc->network_hdr_type = roce_get_field(cqe->byte_28,
                                                    V2_CQE_BYTE_28_PORT_TYPE_M,
index 6f92722baf327c2f6dd760f6d66aadf5d4c0ec02..d04be1cef4539c781ed52c493d45639844f05b12 100644 (file)
@@ -818,6 +818,11 @@ struct hns_roce_v2_cqe {
 #define        V2_CQE_BYTE_28_PORT_TYPE_S 16
 #define V2_CQE_BYTE_28_PORT_TYPE_M GENMASK(17, 16)
 
+#define V2_CQE_BYTE_28_VID_S 18
+#define V2_CQE_BYTE_28_VID_M GENMASK(29, 18)
+
+#define V2_CQE_BYTE_28_VID_VLD_S 30
+
 #define        V2_CQE_BYTE_32_RMT_QPN_S 0
 #define V2_CQE_BYTE_32_RMT_QPN_M GENMASK(23, 0)