lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 576/800] RDMA/cma: Fix incorrect Packet Lifetime calculation
    Date
    From: Håkon Bugge <haakon.bugge@oracle.com>

    [ Upstream commit e84045eab69c625bc0b0bf24d8e05bc65da1eed1 ]

    An approximation for the PacketLifeTime is half the local ACK timeout.
    The encoding for both timers are logarithmic.

    If the local ACK timeout is set, but zero, it means the timer is
    disabled. In this case, we choose the CMA_IBOE_PACKET_LIFETIME value,
    since 50% of infinite makes no sense.

    Before this commit, the PacketLifeTime became 255 if local ACK
    timeout was zero (not running).

    Fixed by explicitly testing for timeout being zero.

    Fixes: e1ee1e62bec4 ("RDMA/cma: Use ACK timeout for RoCE packetLifeTime")
    Link: https://lore.kernel.org/r/1624371207-26710-1-git-send-email-haakon.bugge@oracle.com
    Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/infiniband/core/cma.c | 6 ++++--
    1 file changed, 4 insertions(+), 2 deletions(-)

    diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
    index a5ec61ac11cc..8bbffa04fb48 100644
    --- a/drivers/infiniband/core/cma.c
    +++ b/drivers/infiniband/core/cma.c
    @@ -3096,8 +3096,10 @@ static int cma_resolve_iboe_route(struct rdma_id_private *id_priv)
    * as a reasonable approximation for RoCE networks.
    */
    mutex_lock(&id_priv->qp_mutex);
    - route->path_rec->packet_life_time = id_priv->timeout_set ?
    - id_priv->timeout - 1 : CMA_IBOE_PACKET_LIFETIME;
    + if (id_priv->timeout_set && id_priv->timeout)
    + route->path_rec->packet_life_time = id_priv->timeout - 1;
    + else
    + route->path_rec->packet_life_time = CMA_IBOE_PACKET_LIFETIME;
    mutex_unlock(&id_priv->qp_mutex);

    if (!route->path_rec->mtu) {
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 11:10    [W:3.135 / U:1.656 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site