Merge "icnss: Delay Shutdown/reinit sequence for all cases"
This commit is contained in:
commit
6757ffb0b5
1 changed files with 2 additions and 23 deletions
|
@ -266,7 +266,6 @@ struct icnss_msa_perm_list_t msa_perm_list[ICNSS_MSA_PERM_MAX] = {
|
||||||
struct icnss_event_pd_service_down_data {
|
struct icnss_event_pd_service_down_data {
|
||||||
bool crashed;
|
bool crashed;
|
||||||
bool fw_rejuvenate;
|
bool fw_rejuvenate;
|
||||||
bool wdog_bite;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct icnss_driver_event {
|
struct icnss_driver_event {
|
||||||
|
@ -291,7 +290,6 @@ enum icnss_driver_state {
|
||||||
ICNSS_PD_RESTART,
|
ICNSS_PD_RESTART,
|
||||||
ICNSS_MSA0_ASSIGNED,
|
ICNSS_MSA0_ASSIGNED,
|
||||||
ICNSS_WLFW_EXISTS,
|
ICNSS_WLFW_EXISTS,
|
||||||
ICNSS_WDOG_BITE,
|
|
||||||
ICNSS_SHUTDOWN_DONE,
|
ICNSS_SHUTDOWN_DONE,
|
||||||
ICNSS_HOST_TRIGGERED_PDR,
|
ICNSS_HOST_TRIGGERED_PDR,
|
||||||
};
|
};
|
||||||
|
@ -2149,10 +2147,7 @@ static int icnss_pd_restart_complete(struct icnss_priv *priv)
|
||||||
|
|
||||||
icnss_pm_relax(priv);
|
icnss_pm_relax(priv);
|
||||||
|
|
||||||
if (test_bit(ICNSS_WDOG_BITE, &priv->state)) {
|
icnss_call_driver_shutdown(priv);
|
||||||
icnss_call_driver_shutdown(priv);
|
|
||||||
clear_bit(ICNSS_WDOG_BITE, &priv->state);
|
|
||||||
}
|
|
||||||
|
|
||||||
clear_bit(ICNSS_PD_RESTART, &priv->state);
|
clear_bit(ICNSS_PD_RESTART, &priv->state);
|
||||||
|
|
||||||
|
@ -2302,8 +2297,7 @@ static int icnss_call_driver_remove(struct icnss_priv *priv)
|
||||||
static int icnss_fw_crashed(struct icnss_priv *priv,
|
static int icnss_fw_crashed(struct icnss_priv *priv,
|
||||||
struct icnss_event_pd_service_down_data *event_data)
|
struct icnss_event_pd_service_down_data *event_data)
|
||||||
{
|
{
|
||||||
icnss_pr_dbg("FW crashed, state: 0x%lx, wdog_bite: %d\n",
|
icnss_pr_dbg("FW crashed, state: 0x%lx\n", priv->state);
|
||||||
priv->state, event_data->wdog_bite);
|
|
||||||
|
|
||||||
set_bit(ICNSS_PD_RESTART, &priv->state);
|
set_bit(ICNSS_PD_RESTART, &priv->state);
|
||||||
clear_bit(ICNSS_FW_READY, &priv->state);
|
clear_bit(ICNSS_FW_READY, &priv->state);
|
||||||
|
@ -2313,17 +2307,9 @@ static int icnss_fw_crashed(struct icnss_priv *priv,
|
||||||
if (test_bit(ICNSS_DRIVER_PROBED, &priv->state))
|
if (test_bit(ICNSS_DRIVER_PROBED, &priv->state))
|
||||||
icnss_call_driver_uevent(priv, ICNSS_UEVENT_FW_CRASHED, NULL);
|
icnss_call_driver_uevent(priv, ICNSS_UEVENT_FW_CRASHED, NULL);
|
||||||
|
|
||||||
if (event_data->wdog_bite) {
|
|
||||||
set_bit(ICNSS_WDOG_BITE, &priv->state);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
|
|
||||||
icnss_call_driver_shutdown(priv);
|
|
||||||
|
|
||||||
if (event_data->fw_rejuvenate)
|
if (event_data->fw_rejuvenate)
|
||||||
wlfw_rejuvenate_ack_send_sync_msg(priv);
|
wlfw_rejuvenate_ack_send_sync_msg(priv);
|
||||||
|
|
||||||
out:
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2520,9 +2506,6 @@ static int icnss_modem_notifier_nb(struct notifier_block *nb,
|
||||||
|
|
||||||
event_data->crashed = notif->crashed;
|
event_data->crashed = notif->crashed;
|
||||||
|
|
||||||
if (notif->crashed == CRASH_STATUS_WDOG_BITE)
|
|
||||||
event_data->wdog_bite = true;
|
|
||||||
|
|
||||||
fw_down_data.crashed = !!notif->crashed;
|
fw_down_data.crashed = !!notif->crashed;
|
||||||
icnss_call_driver_uevent(priv, ICNSS_UEVENT_FW_DOWN, &fw_down_data);
|
icnss_call_driver_uevent(priv, ICNSS_UEVENT_FW_DOWN, &fw_down_data);
|
||||||
|
|
||||||
|
@ -2612,7 +2595,6 @@ static int icnss_service_notifier_notify(struct notifier_block *nb,
|
||||||
|
|
||||||
switch (*state) {
|
switch (*state) {
|
||||||
case ROOT_PD_WDOG_BITE:
|
case ROOT_PD_WDOG_BITE:
|
||||||
event_data->wdog_bite = true;
|
|
||||||
priv->stats.recovery.root_pd_crash++;
|
priv->stats.recovery.root_pd_crash++;
|
||||||
break;
|
break;
|
||||||
case ROOT_PD_SHUTDOWN:
|
case ROOT_PD_SHUTDOWN:
|
||||||
|
@ -3832,9 +3814,6 @@ static int icnss_stats_show_state(struct seq_file *s, struct icnss_priv *priv)
|
||||||
case ICNSS_WLFW_EXISTS:
|
case ICNSS_WLFW_EXISTS:
|
||||||
seq_puts(s, "WLAN FW EXISTS");
|
seq_puts(s, "WLAN FW EXISTS");
|
||||||
continue;
|
continue;
|
||||||
case ICNSS_WDOG_BITE:
|
|
||||||
seq_puts(s, "MODEM WDOG BITE");
|
|
||||||
continue;
|
|
||||||
case ICNSS_SHUTDOWN_DONE:
|
case ICNSS_SHUTDOWN_DONE:
|
||||||
seq_puts(s, "SHUTDOWN DONE");
|
seq_puts(s, "SHUTDOWN DONE");
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Add table
Reference in a new issue