wlan: Disable WLAN driver initiated SSR if Riva crashes during unload
When there is a Riva crash, SSR is invoked by WCNSS Kernel driver.
WLAN driver may also try to invoke SSR, since a Riva crash might end up
in a WDI timeout during unload. So if there is a Riva crash, disable
the SSR from WLAN driver in the unload path.
Fixed CRs: 408941
Change-Id: Ia5d72a524d09cdf98a42fb4e2fca110dd0404a39
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 2385238..c7d9f28 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -156,7 +156,7 @@
static struct wake_lock wlan_wake_lock;
#endif
/* set when SSR is needed after unload */
-static v_U8_t isSsrRequired;
+static e_hdd_ssr_required isSsrRequired = HDD_SSR_NOT_REQUIRED;
//internal function declaration
static VOS_STATUS wlan_hdd_framework_restart(hdd_context_t *pHddCtx);
@@ -2181,13 +2181,17 @@
return VOS_STATUS_SUCCESS;
}
-v_U8_t hdd_is_ssr_required( void)
+bool hdd_is_ssr_required( void)
{
- return isSsrRequired;
+ return (isSsrRequired == HDD_SSR_REQUIRED);
}
-void hdd_set_ssr_required( v_U8_t value)
+/* Once SSR is disabled then it cannot be set. */
+void hdd_set_ssr_required( e_hdd_ssr_required value)
{
+ if (HDD_SSR_DISABLED == isSsrRequired)
+ return;
+
isSsrRequired = value;
}