summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWeihang Li <liweihang@huawei.com>2020-12-11 04:37:30 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-01-17 16:16:53 +0300
commit85bbe2e64ab430af3c27a0bc4e22dae04a5e10e6 (patch)
treef992784a5204d378298f7889fbf0d35ebc05c8dd
parent85e25e2370a20352b72af34940fb32746a64fc28 (diff)
downloadlinux-85bbe2e64ab430af3c27a0bc4e22dae04a5e10e6.tar.xz
RDMA/hns: Avoid filling sl in high 3 bits of vlan_id
[ Upstream commit 94a8c4dfcdb2b4fcb3dfafc39c1033a0b4637c86 ] Only the low 12 bits of vlan_id is valid, and service level has been filled in Address Vector. So there is no need to fill sl in vlan_id in Address Vector. Fixes: 7406c0036f85 ("RDMA/hns: Only record vlan info for HIP08") Link: https://lore.kernel.org/r/1607650657-35992-5-git-send-email-liweihang@huawei.com Signed-off-by: Weihang Li <liweihang@huawei.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
-rw-r--r--drivers/infiniband/hw/hns/hns_roce_ah.c11
1 files changed, 1 insertions, 10 deletions
diff --git a/drivers/infiniband/hw/hns/hns_roce_ah.c b/drivers/infiniband/hw/hns/hns_roce_ah.c
index 7dd3b6097226..174b19e39712 100644
--- a/drivers/infiniband/hw/hns/hns_roce_ah.c
+++ b/drivers/infiniband/hw/hns/hns_roce_ah.c
@@ -36,9 +36,6 @@
#include <rdma/ib_cache.h>
#include "hns_roce_device.h"
-#define VLAN_SL_MASK 7
-#define VLAN_SL_SHIFT 13
-
static inline u16 get_ah_udp_sport(const struct rdma_ah_attr *ah_attr)
{
u32 fl = ah_attr->grh.flow_label;
@@ -81,18 +78,12 @@ int hns_roce_create_ah(struct ib_ah *ibah, struct rdma_ah_init_attr *init_attr,
/* HIP08 needs to record vlan info in Address Vector */
if (hr_dev->pci_dev->revision <= PCI_REVISION_ID_HIP08) {
- ah->av.vlan_en = 0;
-
ret = rdma_read_gid_l2_fields(ah_attr->grh.sgid_attr,
&ah->av.vlan_id, NULL);
if (ret)
return ret;
- if (ah->av.vlan_id < VLAN_N_VID) {
- ah->av.vlan_en = 1;
- ah->av.vlan_id |= (rdma_ah_get_sl(ah_attr) & VLAN_SL_MASK) <<
- VLAN_SL_SHIFT;
- }
+ ah->av.vlan_en = ah->av.vlan_id < VLAN_N_VID;
}
return ret;