[dpdk-dev] [PATCH 2/2] net/failsafe: support runtime Tx queues setup

Andrew Rybchenko arybchenko at solarflare.com
Fri Aug 31 18:09:38 CEST 2018


From: Ian Dolzhansky <Ian.Dolzhansky at oktetlabs.ru>

Signed-off-by: Ian Dolzhansky <Ian.Dolzhansky at oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko at solarflare.com>
---
 doc/guides/nics/features/failsafe.ini  | 1 +
 doc/guides/rel_notes/release_18_11.rst | 2 +-
 drivers/net/failsafe/failsafe_ops.c    | 9 ++++++---
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/doc/guides/nics/features/failsafe.ini b/doc/guides/nics/features/failsafe.ini
index 8bb2cac4c..e3c4c08f2 100644
--- a/doc/guides/nics/features/failsafe.ini
+++ b/doc/guides/nics/features/failsafe.ini
@@ -9,6 +9,7 @@ Link status event    = Y
 Rx interrupt         = Y
 Queue start/stop     = Y
 Runtime Rx queue setup = Y
+Runtime Tx queue setup = Y
 MTU update           = Y
 Jumbo frame          = Y
 Promiscuous mode     = Y
diff --git a/doc/guides/rel_notes/release_18_11.rst b/doc/guides/rel_notes/release_18_11.rst
index 85561dacd..5d69c95b1 100644
--- a/doc/guides/rel_notes/release_18_11.rst
+++ b/doc/guides/rel_notes/release_18_11.rst
@@ -60,7 +60,7 @@ New Features
 
   * Support for Rx and Tx queues start and stop.
   * Support for Rx and Tx queues deferred start.
-  * Support for runtime Rx queues setup.
+  * Support for runtime Rx and Tx queues setup.
 
 * **Added ability to switch queue deferred start flag on testpmd app.**
 
diff --git a/drivers/net/failsafe/failsafe_ops.c b/drivers/net/failsafe/failsafe_ops.c
index 5374d0597..809f9d5ff 100644
--- a/drivers/net/failsafe/failsafe_ops.c
+++ b/drivers/net/failsafe/failsafe_ops.c
@@ -89,7 +89,8 @@ static struct rte_eth_dev_info default_infos = {
 			ETH_RSS_UDP |
 			ETH_RSS_TCP,
 	.dev_capa =
-		RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP,
+		RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP |
+		RTE_ETH_DEV_CAPA_RUNTIME_TX_QUEUE_SETUP,
 };
 
 static int
@@ -187,7 +188,7 @@ fs_set_queues_state_start(struct rte_eth_dev *dev)
 	}
 	for (i = 0; i < dev->data->nb_tx_queues; i++) {
 		txq = dev->data->tx_queues[i];
-		if (!txq->info.conf.tx_deferred_start)
+		if (txq != NULL && !txq->info.conf.tx_deferred_start)
 			dev->data->tx_queue_state[i] =
 						RTE_ETH_QUEUE_STATE_STARTED;
 	}
@@ -246,7 +247,9 @@ fs_set_queues_state_stop(struct rte_eth_dev *dev)
 			dev->data->rx_queue_state[i] =
 						RTE_ETH_QUEUE_STATE_STOPPED;
 	for (i = 0; i < dev->data->nb_tx_queues; i++)
-		dev->data->tx_queue_state[i] = RTE_ETH_QUEUE_STATE_STOPPED;
+		if (dev->data->tx_queues[i] != NULL)
+			dev->data->tx_queue_state[i] =
+						RTE_ETH_QUEUE_STATE_STOPPED;
 }
 
 static void
-- 
2.17.1



More information about the dev mailing list