From: Kalesh AP <kalesh-anakkur.pura...@broadcom.com> Fix a race condition between port stop and error recovery task. When io forwarding is not started on Stingray devices, driver will not receive the async event from FW when there is a FW reset. While exiting testpmd, as part of port stop driver sees this event and this in turn causes a race between port stop and error recovery task.
Fixed this by ignoring the fatal/non-fatal async event from FW while stopping port. Fixes: df6cd7c1f73a ("net/bnxt: handle reset notify async event from FW") Cc: sta...@dpdk.org Signed-off-by: Kalesh AP <kalesh-anakkur.pura...@broadcom.com> Reviewed-by: Rahul Gupta <rahul.gu...@broadcom.com> Reviewed-by: Ajit Kumar Khaparde <ajit.khapa...@broadcom.com> --- drivers/net/bnxt/bnxt_cpr.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c index 0f7b5e9..21565b1 100644 --- a/drivers/net/bnxt/bnxt_cpr.c +++ b/drivers/net/bnxt/bnxt_cpr.c @@ -76,6 +76,12 @@ void bnxt_handle_async_event(struct bnxt *bp, PMD_DRV_LOG(INFO, "Port conn async event\n"); break; case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_RESET_NOTIFY: + /* Ignore reset notify async events when stopping the port */ + if (!bp->eth_dev->data->dev_started) { + bp->flags |= BNXT_FLAG_FATAL_ERROR; + return; + } + event_data = rte_le_to_cpu_32(async_cmp->event_data1); /* timestamp_lo/hi values are in units of 100ms */ bp->fw_reset_max_msecs = async_cmp->timestamp_hi ? -- 2.10.1