lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.8 386/633] RDMA/hns: Fix configuration of ack_req_freq in QPC
    Date
    From: Weihang Li <liweihang@huawei.com>

    [ Upstream commit fbed9d2be292504e04caa2057e3a9477a1e1d040 ]

    The hardware will add AckReq flag in BTH header according to the value of
    ack_req_freq to request ACK from responder for the packets with this flag.
    It should be greater than or equal to lp_pktn_ini instead of using a fixed
    value.

    Fixes: 7b9bd73ed13d ("RDMA/hns: Fix wrong assignment of lp_pktn_ini in QPC")
    Link: https://lore.kernel.org/r/1600509802-44382-8-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_hw_v2.c | 18 ++++++++++++------
    1 file changed, 12 insertions(+), 6 deletions(-)

    diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
    index a55a850a8b997..d3b983d9f757b 100644
    --- a/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
    +++ b/drivers/infiniband/hw/hns/hns_roce_hw_v2.c
    @@ -3640,9 +3640,6 @@ static void modify_qp_reset_to_init(struct ib_qp *ibqp,
    V2_QPC_BYTE_76_SRQ_EN_S, 1);
    }

    - roce_set_field(context->byte_172_sq_psn, V2_QPC_BYTE_172_ACK_REQ_FREQ_M,
    - V2_QPC_BYTE_172_ACK_REQ_FREQ_S, 4);
    -
    roce_set_bit(context->byte_172_sq_psn, V2_QPC_BYTE_172_FRE_S, 1);

    hr_qp->access_flags = attr->qp_access_flags;
    @@ -3983,6 +3980,7 @@ static int modify_qp_init_to_rtr(struct ib_qp *ibqp,
    dma_addr_t trrl_ba;
    dma_addr_t irrl_ba;
    enum ib_mtu mtu;
    + u8 lp_pktn_ini;
    u8 port_num;
    u64 *mtts;
    u8 *dmac;
    @@ -4090,13 +4088,21 @@ static int modify_qp_init_to_rtr(struct ib_qp *ibqp,
    }

    #define MAX_LP_MSG_LEN 65536
    - /* MTU*(2^LP_PKTN_INI) shouldn't be bigger than 64kb */
    + /* MTU * (2 ^ LP_PKTN_INI) shouldn't be bigger than 64KB */
    + lp_pktn_ini = ilog2(MAX_LP_MSG_LEN / ib_mtu_enum_to_int(mtu));
    +
    roce_set_field(context->byte_56_dqpn_err, V2_QPC_BYTE_56_LP_PKTN_INI_M,
    - V2_QPC_BYTE_56_LP_PKTN_INI_S,
    - ilog2(MAX_LP_MSG_LEN / ib_mtu_enum_to_int(mtu)));
    + V2_QPC_BYTE_56_LP_PKTN_INI_S, lp_pktn_ini);
    roce_set_field(qpc_mask->byte_56_dqpn_err, V2_QPC_BYTE_56_LP_PKTN_INI_M,
    V2_QPC_BYTE_56_LP_PKTN_INI_S, 0);

    + /* ACK_REQ_FREQ should be larger than or equal to LP_PKTN_INI */
    + roce_set_field(context->byte_172_sq_psn, V2_QPC_BYTE_172_ACK_REQ_FREQ_M,
    + V2_QPC_BYTE_172_ACK_REQ_FREQ_S, lp_pktn_ini);
    + roce_set_field(qpc_mask->byte_172_sq_psn,
    + V2_QPC_BYTE_172_ACK_REQ_FREQ_M,
    + V2_QPC_BYTE_172_ACK_REQ_FREQ_S, 0);
    +
    roce_set_bit(qpc_mask->byte_108_rx_reqepsn,
    V2_QPC_BYTE_108_RX_REQ_PSN_ERR_S, 0);
    roce_set_field(qpc_mask->byte_96_rx_reqmsn, V2_QPC_BYTE_96_RX_REQ_MSN_M,
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 18:09    [W:3.282 / U:0.076 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site