mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-13 03:56:25 +00:00
RDMA/cma: Fix incorrect Packet Lifetime calculation
[ Upstream commite84045eab6
] 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:e1ee1e62be
("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>
This commit is contained in:
parent
fc2ea819b9
commit
11044f8c2c
1 changed files with 4 additions and 2 deletions
|
@ -3060,8 +3060,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) {
|
||||
|
|
Loading…
Reference in a new issue