lkml.org 
[lkml]   [2020]   [May]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 073/312] IB/mlx5: Fix RC transport send queue overhead computation
    Date
    From: Leon Romanovsky <leon@leon.nu>

    commit 75c1657e1d50730dc0130a67977f7831a4e241f4 upstream.

    Fix the RC QPs send queue overhead computation to take into account
    two additional segments in the WQE which are needed for registration
    operations.

    The ATOMIC and UMR segments can't coexist together, so chose maximum out
    of them.

    The commit 9e65dc371b5c ("IB/mlx5: Fix RC transport send queue overhead
    computation") was intended to update RC transport as commit messages
    states, but added the code to UC transport.

    Fixes: 9e65dc371b5c ("IB/mlx5: Fix RC transport send queue overhead computation")
    Signed-off-by: Kamal Heib <kamalh@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/infiniband/hw/mlx5/qp.c | 12 +++++++-----
    1 file changed, 7 insertions(+), 5 deletions(-)

    --- a/drivers/infiniband/hw/mlx5/qp.c
    +++ b/drivers/infiniband/hw/mlx5/qp.c
    @@ -271,8 +271,10 @@ static int sq_overhead(enum ib_qp_type q
    /* fall through */
    case IB_QPT_RC:
    size += sizeof(struct mlx5_wqe_ctrl_seg) +
    - sizeof(struct mlx5_wqe_atomic_seg) +
    - sizeof(struct mlx5_wqe_raddr_seg);
    + max(sizeof(struct mlx5_wqe_atomic_seg) +
    + sizeof(struct mlx5_wqe_raddr_seg),
    + sizeof(struct mlx5_wqe_umr_ctrl_seg) +
    + sizeof(struct mlx5_mkey_seg));
    break;

    case IB_QPT_XRC_TGT:
    @@ -280,9 +282,9 @@ static int sq_overhead(enum ib_qp_type q

    case IB_QPT_UC:
    size += sizeof(struct mlx5_wqe_ctrl_seg) +
    - sizeof(struct mlx5_wqe_raddr_seg) +
    - sizeof(struct mlx5_wqe_umr_ctrl_seg) +
    - sizeof(struct mlx5_mkey_seg);
    + max(sizeof(struct mlx5_wqe_raddr_seg),
    + sizeof(struct mlx5_wqe_umr_ctrl_seg) +
    + sizeof(struct mlx5_mkey_seg));
    break;

    case IB_QPT_UD:

    \
     
     \ /
      Last update: 2020-05-08 15:10    [W:2.099 / U:0.360 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site