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

Commit 09cd60c3 authored by Sandeep Singh's avatar Sandeep Singh
Browse files

icnss: Changes to avoid wlan driver idle shutdown



Add changes to avoid idle shutdown if ssr or modem
graceful shutdown is in progress.

Change-Id: I4d0f01c81bb4e6ace53c642a0fc0af0c714f42ed
Signed-off-by: default avatarSandeep Singh <sandsing@codeaurora.org>
parent 9b483b27
Loading
Loading
Loading
Loading
+8 −19
Original line number Diff line number Diff line
@@ -997,7 +997,6 @@ static int icnss_pd_restart_complete(struct icnss_priv *priv)
	icnss_call_driver_shutdown(priv);

	clear_bit(ICNSS_PDR, &priv->state);
	clear_bit(ICNSS_MODEM_CRASHED, &priv->state);
	clear_bit(ICNSS_REJUVENATE, &priv->state);
	clear_bit(ICNSS_PD_RESTART, &priv->state);
	priv->early_crash_ind = false;
@@ -1261,8 +1260,7 @@ static int icnss_driver_event_idle_shutdown(void *data)
	if (!penv->ops || !penv->ops->idle_shutdown)
		return 0;

	if (test_bit(ICNSS_MODEM_CRASHED, &penv->state) ||
			test_bit(ICNSS_PDR, &penv->state) ||
	if (penv->is_ssr || test_bit(ICNSS_PDR, &penv->state) ||
	    test_bit(ICNSS_REJUVENATE, &penv->state)) {
		icnss_pr_err("SSR/PDR is already in-progress during idle shutdown callback\n");
		ret = -EBUSY;
@@ -1284,8 +1282,7 @@ static int icnss_driver_event_idle_restart(void *data)
	if (!penv->ops || !penv->ops->idle_restart)
		return 0;

	if (test_bit(ICNSS_MODEM_CRASHED, &penv->state) ||
			test_bit(ICNSS_PDR, &penv->state) ||
	if (penv->is_ssr || test_bit(ICNSS_PDR, &penv->state) ||
	    test_bit(ICNSS_REJUVENATE, &penv->state)) {
		icnss_pr_err("SSR/PDR is already in-progress during idle restart callback\n");
		ret = -EBUSY;
@@ -1416,9 +1413,6 @@ static int icnss_modem_notifier_nb(struct notifier_block *nb,

	priv->is_ssr = true;

	if (notif->crashed)
		set_bit(ICNSS_MODEM_CRASHED, &priv->state);

	if (code == SUBSYS_BEFORE_SHUTDOWN && !notif->crashed &&
	    atomic_read(&priv->is_shutdown)) {
		atomic_set(&priv->is_shutdown, false);
@@ -2264,8 +2258,7 @@ int icnss_idle_shutdown(struct device *dev)
		return -EINVAL;
	}

	if (test_bit(ICNSS_MODEM_CRASHED, &priv->state) ||
			test_bit(ICNSS_PDR, &priv->state) ||
	if (priv->is_ssr || test_bit(ICNSS_PDR, &priv->state) ||
	    test_bit(ICNSS_REJUVENATE, &penv->state)) {
		icnss_pr_err("SSR/PDR is already in-progress during idle shutdown\n");
		return -EBUSY;
@@ -2285,8 +2278,7 @@ int icnss_idle_restart(struct device *dev)
		return -EINVAL;
	}

	if (test_bit(ICNSS_MODEM_CRASHED, &priv->state) ||
			test_bit(ICNSS_PDR, &priv->state) ||
	if (priv->is_ssr || test_bit(ICNSS_PDR, &priv->state) ||
	    test_bit(ICNSS_REJUVENATE, &penv->state)) {
		icnss_pr_err("SSR/PDR is already in-progress during idle restart\n");
		return -EBUSY;
@@ -2711,9 +2703,6 @@ static int icnss_stats_show_state(struct seq_file *s, struct icnss_priv *priv)
			continue;
		case ICNSS_PDR:
			seq_puts(s, "PDR TRIGGERED");
			continue;
		case ICNSS_MODEM_CRASHED:
			seq_puts(s, "MODEM CRASHED");
		}

		seq_printf(s, "UNKNOWN-%d", i);
+0 −1
Original line number Diff line number Diff line
@@ -157,7 +157,6 @@ enum icnss_driver_state {
	ICNSS_MODE_ON,
	ICNSS_BLOCK_SHUTDOWN,
	ICNSS_PDR,
	ICNSS_MODEM_CRASHED,
};

struct ce_irq_list {