From b447e89e33336324e7b4729cd35b5a017fe5dd82 Mon Sep 17 00:00:00 2001 From: Yanglong Wu Date: Fri, 11 May 2018 16:22:28 +0800 Subject: [PATCH] ethdev: fix checking Rx/Tx queue status Relax the check for queue setup, since some device may not update queue states during dev_stop. Fixes: cac923cfea47 ("ethdev: support runtime queue setup") Signed-off-by: Yanglong Wu Acked-by: Konstantin Ananyev --- lib/librte_ethdev/rte_ethdev.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index 9ebe86921b..b3ed82105c 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -1525,8 +1525,9 @@ rte_eth_rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id, RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP)) return -EBUSY; - if (dev->data->rx_queue_state[rx_queue_id] != - RTE_ETH_QUEUE_STATE_STOPPED) + if (dev->data->dev_started && + (dev->data->rx_queue_state[rx_queue_id] != + RTE_ETH_QUEUE_STATE_STOPPED)) return -EBUSY; rxq = dev->data->rx_queues; @@ -1689,8 +1690,9 @@ rte_eth_tx_queue_setup(uint16_t port_id, uint16_t tx_queue_id, RTE_ETH_DEV_CAPA_RUNTIME_TX_QUEUE_SETUP)) return -EBUSY; - if (dev->data->tx_queue_state[tx_queue_id] != - RTE_ETH_QUEUE_STATE_STOPPED) + if (dev->data->dev_started && + (dev->data->tx_queue_state[tx_queue_id] != + RTE_ETH_QUEUE_STATE_STOPPED)) return -EBUSY; txq = dev->data->tx_queues; -- 2.20.1