Message ID | 1624371207-26710-1-git-send-email-haakon.bugge@oracle.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Jason Gunthorpe |
Headers | show |
Series | [for-next,v2] RDMA/cma: Fix incorrect Packet Lifetime calculation | expand |
On Tue, Jun 22, 2021 at 04:13:27PM +0200, Håkon Bugge wrote: > 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") > Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com> > Reviewed-by: Leon Romanovsky <leonro@nvidia.com> > --- > > v1 -> v2: > * Rebased on tip of for-next with ("RDMA/cma: Protect RMW > with qp_mutex") included > * A local ACK timeout of zero now sets PacketLifeTime to > CMA_IBOE_PACKET_LIFETIME > * Added Leon's r-b > --- > drivers/infiniband/core/cma.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) Applied to for-next, thanks Jason
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c index c44a0c4..35fe300 100644 --- a/drivers/infiniband/core/cma.c +++ b/drivers/infiniband/core/cma.c @@ -3080,8 +3080,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) {