net/bnxt: fix VNIC config error in Rx queue start
authorAjit Khaparde <ajit.khaparde@broadcom.com>
Tue, 24 Aug 2021 01:58:20 +0000 (18:58 -0700)
committerAjit Khaparde <ajit.khaparde@broadcom.com>
Wed, 25 Aug 2021 03:55:07 +0000 (05:55 +0200)
During port stop/start sequence the Thor FW is returning an error.
This is because we are deriving incorrect active Rx ring and using
that wrong information in the bnxt_vnic_rss_cfg HWRM command.

Fix it by using the rx_queue_state from eth_dev.

Fixes: 0105ea1296c9 ("net/bnxt: support runtime queue setup")
Cc: stable@dpdk.org
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
drivers/net/bnxt/bnxt_hwrm.c

index eb9de45..f29d574 100644 (file)
@@ -5078,6 +5078,7 @@ static int
 bnxt_vnic_rss_configure_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic)
 {
        struct hwrm_vnic_rss_cfg_output *resp = bp->hwrm_cmd_resp_addr;
+       uint8_t *rxq_state = bp->eth_dev->data->rx_queue_state;
        struct hwrm_vnic_rss_cfg_input req = {.req_type = 0 };
        struct bnxt_rx_queue **rxqs = bp->rx_queues;
        uint16_t *ring_tbl = vnic->rss_table;
@@ -5111,7 +5112,7 @@ bnxt_vnic_rss_configure_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic)
 
                        /* Find next active ring. */
                        for (cnt = 0; cnt < max_rings; cnt++) {
-                               if (rxqs[k]->rx_started)
+                               if (rxq_state[k] != RTE_ETH_QUEUE_STATE_STOPPED)
                                        break;
                                if (++k == max_rings)
                                        k = 0;