[PATCH v8 4/4] net/bnxt: notify applications about device reset/recovery
Chengwen Feng
fengchengwen at huawei.com
Thu Jun 16 11:41:22 CEST 2022
From: Kalesh AP <kalesh-anakkur.purayil at broadcom.com>
When the driver receives RESET_NOTIFY async event from FW or detects
an error condition, it should update the application that FW is going
to reset. Once the driver recovers from the reset, update the reset
recovery status to application as well.
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil at broadcom.com>
Signed-off-by: Somnath Kotur <somnath.kotur at broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde at broadcom.com>
Reviewed-by: Chengwen Feng <fengchengwen at huawei.com>
---
drivers/net/bnxt/bnxt_cpr.c | 4 ++++
drivers/net/bnxt/bnxt_ethdev.c | 11 ++++++++++-
2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c
index 99af0f9e87..5bb376d4d5 100644
--- a/drivers/net/bnxt/bnxt_cpr.c
+++ b/drivers/net/bnxt/bnxt_cpr.c
@@ -180,6 +180,10 @@ void bnxt_handle_async_event(struct bnxt *bp,
return;
}
+ rte_eth_dev_callback_process(bp->eth_dev,
+ RTE_ETH_EVENT_ERR_RECOVERING,
+ NULL);
+
pthread_mutex_lock(&bp->err_recovery_lock);
event_data = data1;
/* timestamp_lo/hi values are in units of 100ms */
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 0f0f40b95b..cc02951d95 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -4397,13 +4397,18 @@ static void bnxt_dev_recover(void *arg)
PMD_DRV_LOG(INFO, "Port: %u Recovered from FW reset\n",
bp->eth_dev->data->port_id);
pthread_mutex_unlock(&bp->err_recovery_lock);
-
+ rte_eth_dev_callback_process(bp->eth_dev,
+ RTE_ETH_EVENT_RECOVER_SUCCESS,
+ NULL);
return;
err_start:
bnxt_dev_stop(bp->eth_dev);
err:
bp->flags |= BNXT_FLAG_FATAL_ERROR;
bnxt_uninit_resources(bp, false);
+ rte_eth_dev_callback_process(bp->eth_dev,
+ RTE_ETH_EVENT_RECOVER_FAILED,
+ NULL);
if (bp->eth_dev->data->dev_conf.intr_conf.rmv)
rte_eth_dev_callback_process(bp->eth_dev,
RTE_ETH_EVENT_INTR_RMV,
@@ -4575,6 +4580,10 @@ static void bnxt_check_fw_health(void *arg)
PMD_DRV_LOG(ERR, "Detected FW dead condition\n");
+ rte_eth_dev_callback_process(bp->eth_dev,
+ RTE_ETH_EVENT_ERR_RECOVERING,
+ NULL);
+
if (bnxt_is_primary_func(bp))
wait_msec = info->primary_func_wait_period;
else
--
2.33.0
More information about the dev
mailing list