forked from luck/tmp_suning_uos_patched
RDMA/hns: Fix missing fields in address vector
[ Upstream commit fba429fcf9a5e0c4ec2523ecf4cf18bc0507fcbc ]
Traffic class and hop limit in address vector is not assigned from GRH,
but it will be filled into UD SQ WQE. So the hardware will get a wrong
value.
Fixes: 82e620d9c3
("RDMA/hns: Modify the data structure of hns_roce_av")
Link: https://lore.kernel.org/r/1605526408-6936-3-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>
This commit is contained in:
parent
ba9479d75e
commit
6b8a015eda
|
@ -64,18 +64,20 @@ int hns_roce_create_ah(struct ib_ah *ibah, struct rdma_ah_init_attr *init_attr,
|
|||
struct hns_roce_ah *ah = to_hr_ah(ibah);
|
||||
int ret = 0;
|
||||
|
||||
memcpy(ah->av.mac, ah_attr->roce.dmac, ETH_ALEN);
|
||||
|
||||
ah->av.port = rdma_ah_get_port_num(ah_attr);
|
||||
ah->av.gid_index = grh->sgid_index;
|
||||
|
||||
if (rdma_ah_get_static_rate(ah_attr))
|
||||
ah->av.stat_rate = IB_RATE_10_GBPS;
|
||||
|
||||
memcpy(ah->av.dgid, grh->dgid.raw, HNS_ROCE_GID_SIZE);
|
||||
ah->av.sl = rdma_ah_get_sl(ah_attr);
|
||||
ah->av.hop_limit = grh->hop_limit;
|
||||
ah->av.flowlabel = grh->flow_label;
|
||||
ah->av.udp_sport = get_ah_udp_sport(ah_attr);
|
||||
ah->av.sl = rdma_ah_get_sl(ah_attr);
|
||||
ah->av.tclass = grh->traffic_class;
|
||||
|
||||
memcpy(ah->av.dgid, grh->dgid.raw, HNS_ROCE_GID_SIZE);
|
||||
memcpy(ah->av.mac, ah_attr->roce.dmac, ETH_ALEN);
|
||||
|
||||
/* HIP08 needs to record vlan info in Address Vector */
|
||||
if (hr_dev->pci_dev->revision <= PCI_REVISION_ID_HIP08) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user