DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v2] net/mlx5: fix dynamic inline hint handling
@ 2020-07-23 14:21 Gregory Etelson
  2020-07-23 14:50 ` Raslan Darawsheh
  0 siblings, 1 reply; 2+ messages in thread
From: Gregory Etelson @ 2020-07-23 14:21 UTC (permalink / raw)
  To: dev; +Cc: getelson, matan, rasland, Viacheslav Ovsiienko, Shahaf Shuler

The ConnectX NICs can transfer data from the host memory with two
approaches: provide the pointer to the data buffer, or do data inline
- copy the data to the transmit descriptor (WQE) entirely or only the
part of data. In some configurations the NIC hardware requires the
minimal data to be inline in the descriptor to operate correctly. And
there is the special dynamic flag to hint PMD not to inline the data
(for example, if buffer is located on some other device - storage or
GPU) on per packet basis.

If there was a packet with length shorter than the minimal inline data
length requested by the NIC hardware and the no-inline hint was set
the PMD tried to inline the packet with minimal required length
instead of actual packet's one.  This patch adds the missed length
check into no-inline hint handling branch.

Fixes: cacb44a09962 ("net/mlx5: add no-inline Tx flag")

Signed-off-by: Gregory Etelson <getelson@mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxtx.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c
index 3eb0243603..1b71e94221 100644
--- a/drivers/net/mlx5/mlx5_rxtx.c
+++ b/drivers/net/mlx5/mlx5_rxtx.c
@@ -4739,6 +4739,8 @@ mlx5_tx_burst_single_send(struct mlx5_txq_data *__rte_restrict txq,
 					      txq->inlen_mode) ||
 					    (MLX5_TXOFF_CONFIG(MPW) &&
 					     txq->inlen_mode)) {
+						if (inlen <= txq->inlen_send)
+							goto single_inline;
 						/*
 						 * The hardware requires the
 						 * minimal inline data header.
@@ -4755,6 +4757,7 @@ mlx5_tx_burst_single_send(struct mlx5_txq_data *__rte_restrict txq,
 					}
 					goto single_no_inline;
 				}
+single_inline:
 				/*
 				 * Completely inlined packet data WQE:
 				 * - Control Segment, SEND opcode
-- 
2.25.1


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

* Re: [dpdk-dev] [PATCH v2] net/mlx5: fix dynamic inline hint handling
  2020-07-23 14:21 [dpdk-dev] [PATCH v2] net/mlx5: fix dynamic inline hint handling Gregory Etelson
@ 2020-07-23 14:50 ` Raslan Darawsheh
  0 siblings, 0 replies; 2+ messages in thread
From: Raslan Darawsheh @ 2020-07-23 14:50 UTC (permalink / raw)
  To: Gregory Etelson, dev; +Cc: Matan Azrad, Slava Ovsiienko, Shahaf Shuler

Hi,

> -----Original Message-----
> From: Gregory Etelson <getelson@mellanox.com>
> Sent: Thursday, July 23, 2020 5:21 PM
> To: dev@dpdk.org
> Cc: Gregory Etelson <getelson@mellanox.com>; Matan Azrad
> <matan@mellanox.com>; Raslan Darawsheh <rasland@mellanox.com>;
> Slava Ovsiienko <viacheslavo@mellanox.com>; Shahaf Shuler
> <shahafs@mellanox.com>
> Subject: [PATCH v2] net/mlx5: fix dynamic inline hint handling
> 
> The ConnectX NICs can transfer data from the host memory with two
> approaches: provide the pointer to the data buffer, or do data inline
> - copy the data to the transmit descriptor (WQE) entirely or only the
> part of data. In some configurations the NIC hardware requires the
> minimal data to be inline in the descriptor to operate correctly. And
> there is the special dynamic flag to hint PMD not to inline the data
> (for example, if buffer is located on some other device - storage or
> GPU) on per packet basis.
> 
> If there was a packet with length shorter than the minimal inline data
> length requested by the NIC hardware and the no-inline hint was set
> the PMD tried to inline the packet with minimal required length
> instead of actual packet's one.  This patch adds the missed length
> check into no-inline hint handling branch.
> 
> Fixes: cacb44a09962 ("net/mlx5: add no-inline Tx flag")
Added missing Cc: stable@dpdk.org

> 
> Signed-off-by: Gregory Etelson <getelson@mellanox.com>
> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> ---
>  drivers/net/mlx5/mlx5_rxtx.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c
> index 3eb0243603..1b71e94221 100644
> --- a/drivers/net/mlx5/mlx5_rxtx.c
> +++ b/drivers/net/mlx5/mlx5_rxtx.c
> @@ -4739,6 +4739,8 @@ mlx5_tx_burst_single_send(struct mlx5_txq_data
> *__rte_restrict txq,
>  					      txq->inlen_mode) ||
>  					    (MLX5_TXOFF_CONFIG(MPW) &&
>  					     txq->inlen_mode)) {
> +						if (inlen <= txq->inlen_send)
> +							goto single_inline;
>  						/*
>  						 * The hardware requires the
>  						 * minimal inline data header.
> @@ -4755,6 +4757,7 @@ mlx5_tx_burst_single_send(struct mlx5_txq_data
> *__rte_restrict txq,
>  					}
>  					goto single_no_inline;
>  				}
> +single_inline:
>  				/*
>  				 * Completely inlined packet data WQE:
>  				 * - Control Segment, SEND opcode
> --
> 2.25.1


Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh

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

end of thread, other threads:[~2020-07-23 14:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-23 14:21 [dpdk-dev] [PATCH v2] net/mlx5: fix dynamic inline hint handling Gregory Etelson
2020-07-23 14:50 ` Raslan Darawsheh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).