[dpdk-stable] [PATCH 19.11 2/2] net/ena: trigger reset on Tx prepare failure
Michal Krawczyk
mk at semihalf.com
Wed Aug 11 11:51:45 CEST 2021
[ 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 at dpdk.org
Signed-off-by: Michal Krawczyk <mk at semihalf.com>
Reviewed-by: Shai Brandes <shaibran at amazon.com>
Reviewed-by: Shay Agroskin <shayagr at 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
More information about the stable
mailing list