patches for DPDK stable branches
 help / color / mirror / Atom feed
* [dpdk-stable] [PATCH 19.11 1/2] net/ena: enable multi-segment in Tx offload flags
@ 2021-08-11  9:51 Michal Krawczyk
  2021-08-11  9:51 ` [dpdk-stable] [PATCH 19.11 2/2] net/ena: trigger reset on Tx prepare failure Michal Krawczyk
  2021-08-11 10:10 ` [dpdk-stable] [PATCH 19.11 1/2] net/ena: enable multi-segment in Tx offload flags Christian Ehrhardt
  0 siblings, 2 replies; 4+ messages in thread
From: Michal Krawczyk @ 2021-08-11  9:51 UTC (permalink / raw)
  To: christian.ehrhardt, stable; +Cc: Ghalem Boudour, Olivier Matz, Michal Krawczyk

From: Ghalem Boudour <ghalem.boudour@6wind.com>

[ upstream commit 3e7008459df969611fb7aa3b885a949515ac0b49 ]

The DPDK ENA driver does not provide multi-segment tx offload capability.
Let's add DEV_TX_OFFLOAD_MULTI_SEGS to ports offload capability by
default, and always set it in dev->data->dev_conf.txmode.offload.

This flag in not listed in doc/guides/nics/features/default.ini, so
ena.ini does not need to be updated.

Fixes: 1173fca25af9 ("ena: add polling-mode driver")
Cc: stable@dpdk.org

Signed-off-by: Ghalem Boudour <ghalem.boudour@6wind.com>
Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Michal Krawczyk <mk@semihalf.com>
---
 drivers/net/ena/ena_ethdev.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index febca8fdb7..6c9a2aa1a9 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -1877,6 +1877,8 @@ static int ena_dev_configure(struct rte_eth_dev *dev)
 
 	adapter->state = ENA_ADAPTER_STATE_CONFIG;
 
+	dev->data->dev_conf.txmode.offloads |= DEV_TX_OFFLOAD_MULTI_SEGS;
+
 	adapter->tx_selected_offloads = dev->data->dev_conf.txmode.offloads;
 	adapter->rx_selected_offloads = dev->data->dev_conf.rxmode.offloads;
 	return 0;
@@ -1948,6 +1950,7 @@ static int ena_infos_get(struct rte_eth_dev *dev,
 			DEV_RX_OFFLOAD_TCP_CKSUM;
 
 	rx_feat |= DEV_RX_OFFLOAD_JUMBO_FRAME;
+	tx_feat |= DEV_TX_OFFLOAD_MULTI_SEGS;
 
 	/* Inform framework about available features */
 	dev_info->rx_offload_capa = rx_feat;
-- 
2.25.1


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

* [dpdk-stable] [PATCH 19.11 2/2] net/ena: trigger reset on Tx prepare failure
  2021-08-11  9:51 [dpdk-stable] [PATCH 19.11 1/2] net/ena: enable multi-segment in Tx offload flags Michal Krawczyk
@ 2021-08-11  9:51 ` Michal Krawczyk
  2021-08-11 10:10   ` Christian Ehrhardt
  2021-08-11 10:10 ` [dpdk-stable] [PATCH 19.11 1/2] net/ena: enable multi-segment in Tx offload flags Christian Ehrhardt
  1 sibling, 1 reply; 4+ messages in thread
From: Michal Krawczyk @ 2021-08-11  9:51 UTC (permalink / raw)
  To: christian.ehrhardt, stable; +Cc: Michal Krawczyk, Shai Brandes, Shay Agroskin

[ upstream commit b57e1053813b369d20bb2a177081a4c8ca63cede ]

If the prepare function failed, then it means the descriptors are in the
invalid state.

This condition now triggers the reset, which should be further handled
by the application.

To notify the application about prepare function failure, the error log
was added. In general, it should never fail in normal conditions, as the
Tx function checks for the available space in the Tx ring before the
preparation even starts.

Fixes: 2081d5e2e92d ("net/ena: add reset routine")
Cc: stable@dpdk.org

Signed-off-by: Michal Krawczyk <mk@semihalf.com>
Reviewed-by: Shai Brandes <shaibran@amazon.com>
Reviewed-by: Shay Agroskin <shayagr@amazon.com>
---
 drivers/net/ena/ena_ethdev.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
index 6c9a2aa1a9..408e127511 100644
--- a/drivers/net/ena/ena_ethdev.c
+++ b/drivers/net/ena/ena_ethdev.c
@@ -2359,7 +2359,12 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
 		rc = ena_com_prepare_tx(tx_ring->ena_com_io_sq,
 					&ena_tx_ctx, &nb_hw_desc);
 		if (unlikely(rc)) {
+			PMD_DRV_LOG(ERR,
+				"Failed to prepare Tx buffers, rc: %d\n", rc);
 			++tx_ring->tx_stats.prepare_ctx_err;
+			tx_ring->adapter->reset_reason =
+				ENA_REGS_RESET_DRIVER_INVALID_STATE;
+			tx_ring->adapter->trigger_reset = true;
 			break;
 		}
 		tx_info->tx_descs = nb_hw_desc;
-- 
2.25.1


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

* Re: [dpdk-stable] [PATCH 19.11 1/2] net/ena: enable multi-segment in Tx offload flags
  2021-08-11  9:51 [dpdk-stable] [PATCH 19.11 1/2] net/ena: enable multi-segment in Tx offload flags Michal Krawczyk
  2021-08-11  9:51 ` [dpdk-stable] [PATCH 19.11 2/2] net/ena: trigger reset on Tx prepare failure Michal Krawczyk
@ 2021-08-11 10:10 ` Christian Ehrhardt
  1 sibling, 0 replies; 4+ messages in thread
From: Christian Ehrhardt @ 2021-08-11 10:10 UTC (permalink / raw)
  To: Michal Krawczyk; +Cc: dpdk stable, Ghalem Boudour, Olivier Matz

On Wed, Aug 11, 2021 at 11:52 AM Michal Krawczyk <mk@semihalf.com> wrote:
>
> From: Ghalem Boudour <ghalem.boudour@6wind.com>
>
> [ upstream commit 3e7008459df969611fb7aa3b885a949515ac0b49 ]
>

Applied, thanks!

> The DPDK ENA driver does not provide multi-segment tx offload capability.
> Let's add DEV_TX_OFFLOAD_MULTI_SEGS to ports offload capability by
> default, and always set it in dev->data->dev_conf.txmode.offload.
>
> This flag in not listed in doc/guides/nics/features/default.ini, so
> ena.ini does not need to be updated.
>
> Fixes: 1173fca25af9 ("ena: add polling-mode driver")
> Cc: stable@dpdk.org
>
> Signed-off-by: Ghalem Boudour <ghalem.boudour@6wind.com>
> Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
> Acked-by: Michal Krawczyk <mk@semihalf.com>
> ---
>  drivers/net/ena/ena_ethdev.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
> index febca8fdb7..6c9a2aa1a9 100644
> --- a/drivers/net/ena/ena_ethdev.c
> +++ b/drivers/net/ena/ena_ethdev.c
> @@ -1877,6 +1877,8 @@ static int ena_dev_configure(struct rte_eth_dev *dev)
>
>         adapter->state = ENA_ADAPTER_STATE_CONFIG;
>
> +       dev->data->dev_conf.txmode.offloads |= DEV_TX_OFFLOAD_MULTI_SEGS;
> +
>         adapter->tx_selected_offloads = dev->data->dev_conf.txmode.offloads;
>         adapter->rx_selected_offloads = dev->data->dev_conf.rxmode.offloads;
>         return 0;
> @@ -1948,6 +1950,7 @@ static int ena_infos_get(struct rte_eth_dev *dev,
>                         DEV_RX_OFFLOAD_TCP_CKSUM;
>
>         rx_feat |= DEV_RX_OFFLOAD_JUMBO_FRAME;
> +       tx_feat |= DEV_TX_OFFLOAD_MULTI_SEGS;
>
>         /* Inform framework about available features */
>         dev_info->rx_offload_capa = rx_feat;
> --
> 2.25.1
>


-- 
Christian Ehrhardt
Staff Engineer, Ubuntu Server
Canonical Ltd

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

* Re: [dpdk-stable] [PATCH 19.11 2/2] net/ena: trigger reset on Tx prepare failure
  2021-08-11  9:51 ` [dpdk-stable] [PATCH 19.11 2/2] net/ena: trigger reset on Tx prepare failure Michal Krawczyk
@ 2021-08-11 10:10   ` Christian Ehrhardt
  0 siblings, 0 replies; 4+ messages in thread
From: Christian Ehrhardt @ 2021-08-11 10:10 UTC (permalink / raw)
  To: Michal Krawczyk; +Cc: dpdk stable, Shai Brandes, Shay Agroskin

On Wed, Aug 11, 2021 at 11:52 AM Michal Krawczyk <mk@semihalf.com> wrote:
>
> [ upstream commit b57e1053813b369d20bb2a177081a4c8ca63cede ]
>

Applied, thanks!

> If the prepare function failed, then it means the descriptors are in the
> invalid state.
>
> This condition now triggers the reset, which should be further handled
> by the application.
>
> To notify the application about prepare function failure, the error log
> was added. In general, it should never fail in normal conditions, as the
> Tx function checks for the available space in the Tx ring before the
> preparation even starts.
>
> Fixes: 2081d5e2e92d ("net/ena: add reset routine")
> Cc: stable@dpdk.org
>
> Signed-off-by: Michal Krawczyk <mk@semihalf.com>
> Reviewed-by: Shai Brandes <shaibran@amazon.com>
> Reviewed-by: Shay Agroskin <shayagr@amazon.com>
> ---
>  drivers/net/ena/ena_ethdev.c | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c
> index 6c9a2aa1a9..408e127511 100644
> --- a/drivers/net/ena/ena_ethdev.c
> +++ b/drivers/net/ena/ena_ethdev.c
> @@ -2359,7 +2359,12 @@ static uint16_t eth_ena_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts,
>                 rc = ena_com_prepare_tx(tx_ring->ena_com_io_sq,
>                                         &ena_tx_ctx, &nb_hw_desc);
>                 if (unlikely(rc)) {
> +                       PMD_DRV_LOG(ERR,
> +                               "Failed to prepare Tx buffers, rc: %d\n", rc);
>                         ++tx_ring->tx_stats.prepare_ctx_err;
> +                       tx_ring->adapter->reset_reason =
> +                               ENA_REGS_RESET_DRIVER_INVALID_STATE;
> +                       tx_ring->adapter->trigger_reset = true;
>                         break;
>                 }
>                 tx_info->tx_descs = nb_hw_desc;
> --
> 2.25.1
>


-- 
Christian Ehrhardt
Staff Engineer, Ubuntu Server
Canonical Ltd

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

end of thread, other threads:[~2021-08-11 10:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-11  9:51 [dpdk-stable] [PATCH 19.11 1/2] net/ena: enable multi-segment in Tx offload flags Michal Krawczyk
2021-08-11  9:51 ` [dpdk-stable] [PATCH 19.11 2/2] net/ena: trigger reset on Tx prepare failure Michal Krawczyk
2021-08-11 10:10   ` Christian Ehrhardt
2021-08-11 10:10 ` [dpdk-stable] [PATCH 19.11 1/2] net/ena: enable multi-segment in Tx offload flags Christian Ehrhardt

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