Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6757ffb0 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "icnss: Delay Shutdown/reinit sequence for all cases"

parents 6f1a42cb 21d31ab5
Loading
Loading
Loading
Loading
+2 −23
Original line number Diff line number Diff line
@@ -266,7 +266,6 @@ struct icnss_msa_perm_list_t msa_perm_list[ICNSS_MSA_PERM_MAX] = {
struct icnss_event_pd_service_down_data {
	bool crashed;
	bool fw_rejuvenate;
	bool wdog_bite;
};

struct icnss_driver_event {
@@ -291,7 +290,6 @@ enum icnss_driver_state {
	ICNSS_PD_RESTART,
	ICNSS_MSA0_ASSIGNED,
	ICNSS_WLFW_EXISTS,
	ICNSS_WDOG_BITE,
	ICNSS_SHUTDOWN_DONE,
	ICNSS_HOST_TRIGGERED_PDR,
};
@@ -2149,10 +2147,7 @@ static int icnss_pd_restart_complete(struct icnss_priv *priv)

	icnss_pm_relax(priv);

	if (test_bit(ICNSS_WDOG_BITE, &priv->state)) {
	icnss_call_driver_shutdown(priv);
		clear_bit(ICNSS_WDOG_BITE, &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,
			    struct icnss_event_pd_service_down_data *event_data)
{
	icnss_pr_dbg("FW crashed, state: 0x%lx, wdog_bite: %d\n",
		     priv->state, event_data->wdog_bite);
	icnss_pr_dbg("FW crashed, state: 0x%lx\n", priv->state);

	set_bit(ICNSS_PD_RESTART, &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))
		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)
		wlfw_rejuvenate_ack_send_sync_msg(priv);

out:
	return 0;
}

@@ -2520,9 +2506,6 @@ static int icnss_modem_notifier_nb(struct notifier_block *nb,

	event_data->crashed = notif->crashed;

	if (notif->crashed == CRASH_STATUS_WDOG_BITE)
		event_data->wdog_bite = true;

	fw_down_data.crashed = !!notif->crashed;
	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) {
	case ROOT_PD_WDOG_BITE:
		event_data->wdog_bite = true;
		priv->stats.recovery.root_pd_crash++;
		break;
	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:
			seq_puts(s, "WLAN FW EXISTS");
			continue;
		case ICNSS_WDOG_BITE:
			seq_puts(s, "MODEM WDOG BITE");
			continue;
		case ICNSS_SHUTDOWN_DONE:
			seq_puts(s, "SHUTDOWN DONE");
			continue;