IB/cma: Introduce rdma_set_min_rnr_timer()
authorHåkon Bugge <haakon.bugge@oracle.com>
Wed, 31 Mar 2021 18:43:13 +0000 (20:43 +0200)
committerJason Gunthorpe <jgg@nvidia.com>
Mon, 12 Apr 2021 22:51:48 +0000 (19:51 -0300)
commit3aeffc46afde05140551abb49efaa4563adba38c
treef1395d533041900e5d79a011ddbb878f0837585f
parent8166e0090511275f0da13a09824bdb43c7972405
IB/cma: Introduce rdma_set_min_rnr_timer()

Introduce the ability for kernel ULPs to adjust the minimum RNR Retry
timer. The INIT -> RTR transition executed by RDMA CM will be used for
this adjustment. This avoids an additional ib_modify_qp() call.

rdma_set_min_rnr_timer() must be called before the call to rdma_connect()
on the active side and before the call to rdma_accept() on the passive
side.

The default value of RNR Retry timer is zero, which translates to 655
ms. When the receiver is not ready to accept a send messages, it encodes
the RNR Retry timer value in the NAK. The requestor will then wait at
least the specified time value before retrying the send.

The 5-bit value to be supplied to the rdma_set_min_rnr_timer() is
documented in IBTA Table 45: "Encoding for RNR NAK Timer Field".

Link: https://lore.kernel.org/r/1617216194-12890-2-git-send-email-haakon.bugge@oracle.com
Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
Acked-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/core/cma.c
drivers/infiniband/core/cma_priv.h
include/rdma/rdma_cm.h