public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH for-next v2] RDMA/cma: Fix incorrect Packet Lifetime calculation
@ 2021-06-22 14:13 Håkon Bugge
  2021-06-25 14:44 ` Jason Gunthorpe
  0 siblings, 1 reply; 2+ messages in thread
From: Håkon Bugge @ 2021-06-22 14:13 UTC (permalink / raw)
  To: Doug Ledford, Jason Gunthorpe, Leon Romanovsky; +Cc: linux-rdma

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(-)

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) {
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH for-next v2] RDMA/cma: Fix incorrect Packet Lifetime calculation
  2021-06-22 14:13 [PATCH for-next v2] RDMA/cma: Fix incorrect Packet Lifetime calculation Håkon Bugge
@ 2021-06-25 14:44 ` Jason Gunthorpe
  0 siblings, 0 replies; 2+ messages in thread
From: Jason Gunthorpe @ 2021-06-25 14:44 UTC (permalink / raw)
  To: Håkon Bugge; +Cc: Doug Ledford, Leon Romanovsky, linux-rdma

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-06-25 14:44 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-06-22 14:13 [PATCH for-next v2] RDMA/cma: Fix incorrect Packet Lifetime calculation Håkon Bugge
2021-06-25 14:44 ` Jason Gunthorpe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox