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

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

Merge "icnss: Add a flag to indicare FW rejuvenate"

parents d2c711c7 e7ad20af
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -298,6 +298,7 @@ enum icnss_driver_state {
	ICNSS_HOST_TRIGGERED_PDR,
	ICNSS_FW_DOWN,
	ICNSS_DRIVER_UNLOADING,
	ICNSS_REJUVENATE,
};

struct ce_irq_list {
@@ -1187,6 +1188,14 @@ bool icnss_is_fw_down(void)
}
EXPORT_SYMBOL(icnss_is_fw_down);

bool icnss_is_rejuvenate(void)
{
	if (!penv)
		return false;
	else
		return test_bit(ICNSS_REJUVENATE, &penv->state);
}
EXPORT_SYMBOL(icnss_is_rejuvenate);

int icnss_power_off(struct device *dev)
{
@@ -2007,6 +2016,7 @@ static void icnss_qmi_wlfw_clnt_ind(struct qmi_handle *handle,
		event_data->crashed = true;
		event_data->fw_rejuvenate = true;
		fw_down_data.crashed = true;
		set_bit(ICNSS_REJUVENATE, &penv->state);
		icnss_call_driver_uevent(penv, ICNSS_UEVENT_FW_DOWN,
					 &fw_down_data);
		icnss_driver_event_post(ICNSS_DRIVER_EVENT_PD_SERVICE_DOWN,
@@ -2191,6 +2201,7 @@ static int icnss_pd_restart_complete(struct icnss_priv *priv)

	icnss_call_driver_shutdown(priv);

	clear_bit(ICNSS_REJUVENATE, &penv->state);
	clear_bit(ICNSS_PD_RESTART, &priv->state);

	if (!priv->ops || !priv->ops->reinit)
@@ -3903,6 +3914,9 @@ static int icnss_stats_show_state(struct seq_file *s, struct icnss_priv *priv)
		case ICNSS_FW_DOWN:
			seq_puts(s, "FW DOWN");
			continue;
		case ICNSS_REJUVENATE:
			seq_puts(s, "FW REJUVENATE");
			continue;
		case ICNSS_DRIVER_UNLOADING:
			seq_puts(s, "DRIVER UNLOADING");
		}
+1 −0
Original line number Diff line number Diff line
@@ -153,6 +153,7 @@ extern int icnss_wlan_get_dfs_nol(void *info, u16 info_len);
extern bool icnss_is_qmi_disable(struct device *dev);
extern bool icnss_is_fw_ready(void);
extern bool icnss_is_fw_down(void);
extern bool icnss_is_rejuvenate(void);
extern int icnss_set_wlan_mac_address(const u8 *in, const uint32_t len);
extern u8 *icnss_get_wlan_mac_address(struct device *dev, uint32_t *num);
extern int icnss_trigger_recovery(struct device *dev);