net/bnxt: set fast-path pointers only if recovery succeeds
authorKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Tue, 4 Jan 2022 08:38:13 +0000 (14:08 +0530)
committerAjit Khaparde <ajit.khaparde@broadcom.com>
Wed, 12 Jan 2022 01:52:48 +0000 (02:52 +0100)
During reset recovery, fixed to set the fast-path pointers
only if recovery succeeds.

Fixes: 720b55ad278e ("net/bnxt: fix crash caused by error recovery")
Cc: stable@dpdk.org
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
drivers/net/bnxt/bnxt_ethdev.c

index 82350a5..80de320 100644 (file)
@@ -4376,16 +4376,16 @@ static void bnxt_dev_recover(void *arg)
                goto err_start;
        }
 
+       rc = bnxt_restore_filters(bp);
+       if (rc)
+               goto err_start;
+
        rte_eth_fp_ops[bp->eth_dev->data->port_id].rx_pkt_burst =
                bp->eth_dev->rx_pkt_burst;
        rte_eth_fp_ops[bp->eth_dev->data->port_id].tx_pkt_burst =
                bp->eth_dev->tx_pkt_burst;
        rte_mb();
 
-       rc = bnxt_restore_filters(bp);
-       if (rc)
-               goto err_start;
-
        PMD_DRV_LOG(INFO, "Port: %u Recovered from FW reset\n",
                    bp->eth_dev->data->port_id);
        pthread_mutex_unlock(&bp->err_recovery_lock);