net/bnxt: fix Rx queue state on start
authorAjit Khaparde <ajit.khaparde@broadcom.com>
Tue, 5 Oct 2021 04:05:23 +0000 (21:05 -0700)
committerAjit Khaparde <ajit.khaparde@broadcom.com>
Tue, 12 Oct 2021 20:36:03 +0000 (22:36 +0200)
Fix Rx queue state on device start.
The state of Rx queues could be incorrect in some cases
because instead of updating the state for all the Rx queues,
we are updating it for queues in a VNIC.

Fixes: 0105ea1296c9 ("net/bnxt: support runtime queue setup")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Lance Richardson <lance.richardson@broadcom.com>
drivers/net/bnxt/bnxt_ethdev.c

index aa7e7fd..a98f93a 100644 (file)
@@ -482,12 +482,6 @@ static int bnxt_setup_one_vnic(struct bnxt *bp, uint16_t vnic_id)
                        rxq->vnic->fw_grp_ids[j] = INVALID_HW_RING_ID;
                else
                        vnic->rx_queue_cnt++;
-
-               if (!rxq->rx_deferred_start) {
-                       bp->eth_dev->data->rx_queue_state[j] =
-                               RTE_ETH_QUEUE_STATE_STARTED;
-                       rxq->rx_started = true;
-               }
        }
 
        PMD_DRV_LOG(DEBUG, "vnic->rx_queue_cnt = %d\n", vnic->rx_queue_cnt);
@@ -824,6 +818,16 @@ skip_cosq_cfg:
                }
        }
 
+       for (j = 0; j < bp->rx_nr_rings; j++) {
+               struct bnxt_rx_queue *rxq = bp->rx_queues[j];
+
+               if (!rxq->rx_deferred_start) {
+                       bp->eth_dev->data->rx_queue_state[j] =
+                               RTE_ETH_QUEUE_STATE_STARTED;
+                       rxq->rx_started = true;
+               }
+       }
+
        rc = bnxt_hwrm_cfa_l2_set_rx_mask(bp, &bp->vnic_info[0], 0, NULL);
        if (rc) {
                PMD_DRV_LOG(ERR,