net/bnxt: keep consistent Rx queue start/stop state
authorLance Richardson <lance.richardson@broadcom.com>
Mon, 4 Nov 2019 20:27:45 +0000 (15:27 -0500)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 8 Nov 2019 22:15:04 +0000 (23:15 +0100)
Receive queue state needs to reflect "started" state when rebuilding
the RSS table for Thor-based NICs. Move state update so that receive
queues being started are included in the RSS table.

Fixes: 38412304b50a ("net/bnxt: enable RSS for thor-based controllers")
Cc: stable@dpdk.org
Signed-off-by: Lance Richardson <lance.richardson@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
drivers/net/bnxt/bnxt_rxq.c

index ab889c1..e82eda9 100644 (file)
@@ -444,6 +444,8 @@ int bnxt_rx_queue_start(struct rte_eth_dev *dev, uint16_t rx_queue_id)
         * If queue is it started, we do not post buffers for Rx.
         */
        rxq->rx_started = true;
+       dev->data->rx_queue_state[rx_queue_id] = RTE_ETH_QUEUE_STATE_STARTED;
+
        bnxt_free_hwrm_rx_ring(bp, rx_queue_id);
        rc = bnxt_alloc_hwrm_rx_ring(bp, rx_queue_id);
        if (rc)
@@ -469,11 +471,11 @@ int bnxt_rx_queue_start(struct rte_eth_dev *dev, uint16_t rx_queue_id)
                rc = bnxt_vnic_rss_configure(bp, vnic);
        }
 
-       if (rc == 0)
+       if (rc != 0) {
                dev->data->rx_queue_state[rx_queue_id] =
-                               RTE_ETH_QUEUE_STATE_STARTED;
-       else
+                               RTE_ETH_QUEUE_STATE_STOPPED;
                rxq->rx_started = false;
+       }
 
        PMD_DRV_LOG(INFO,
                    "queue %d, rx_deferred_start %d, state %d!\n",