lkml.org 
[lkml]   [2020]   [Dec]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 215/717] RDMA/hns: Fix missing fields in address vector
    Date
    From: Weihang Li <liweihang@huawei.com>

    [ 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: 82e620d9c3a0 ("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>
    ---
    drivers/infiniband/hw/hns/hns_roce_ah.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    diff --git a/drivers/infiniband/hw/hns/hns_roce_ah.c b/drivers/infiniband/hw/hns/hns_roce_ah.c
    index 3be80d42e03a9..d65ff6aa322fa 100644
    --- a/drivers/infiniband/hw/hns/hns_roce_ah.c
    +++ b/drivers/infiniband/hw/hns/hns_roce_ah.c
    @@ -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) {
    --
    2.27.0


    \
     
     \ /
      Last update: 2020-12-28 15:12    [W:5.001 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site