diff options
| author | Yue Ma <yuem@qca.qualcomm.com> | 2014-01-28 16:33:11 -0800 |
|---|---|---|
| committer | Prakash Dhavali <pdhavali@qca.qualcomm.com> | 2014-01-31 17:28:05 -0800 |
| commit | 89eb5c2f36ca044813f2bdbcad4002cb49851e26 (patch) | |
| tree | aa9393d7fc4ed512b2b8928c8203ed9c6f0592b9 | |
| parent | 17b651403c29ff5c9b8b16b3952d1e16448877b2 (diff) | |
qcacld: Set SSR flag right after target assert happens
In order to avoid a race condition between SSR and driver unloading,
we need set SSR flag immediately after target assert happens and check
it when driver unloads.
Change-Id: I3d9718e91f413fe0c822db8129f7fea410e63c6a
CRs-Fixed: 606725
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_early_suspend.c | 1 | ||||
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_main.c | 3 | ||||
| -rw-r--r-- | CORE/SERVICES/BMI/ol_fw.c | 4 |
3 files changed, 6 insertions, 2 deletions
diff --git a/CORE/HDD/src/wlan_hdd_early_suspend.c b/CORE/HDD/src/wlan_hdd_early_suspend.c index 96681213fda0..20a179d3f9da 100644 --- a/CORE/HDD/src/wlan_hdd_early_suspend.c +++ b/CORE/HDD/src/wlan_hdd_early_suspend.c @@ -1492,7 +1492,6 @@ VOS_STATUS hdd_wlan_shutdown(void) } #if defined(QCA_WIFI_2_0) && !defined(QCA_WIFI_ISOC) - vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, TRUE); pHddCtx->isLogpInProgress = TRUE; #endif diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c index 2d4c4a25dfec..4c40030bf52e 100644 --- a/CORE/HDD/src/wlan_hdd_main.c +++ b/CORE/HDD/src/wlan_hdd_main.c @@ -10036,7 +10036,8 @@ static void hdd_driver_exit(void) } else { - while(pHddCtx->isLogpInProgress) { + while(pHddCtx->isLogpInProgress || + vos_is_logp_in_progress(VOS_MODULE_ID_VOSS, NULL)) { VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_FATAL, "%s:SSR in Progress; block rmmod for 1 second!!!", __func__); msleep(1000); diff --git a/CORE/SERVICES/BMI/ol_fw.c b/CORE/SERVICES/BMI/ol_fw.c index 2c0973a83cde..e632876fa4f3 100644 --- a/CORE/SERVICES/BMI/ol_fw.c +++ b/CORE/SERVICES/BMI/ol_fw.c @@ -571,6 +571,10 @@ void ol_target_failure(void *instance, A_STATUS status) printk("XXX TARGET ASSERTED XXX\n"); scn->target_status = OL_TRGET_STATUS_RESET; +#if defined(QCA_WIFI_2_0) && !defined(QCA_WIFI_ISOC) + vos_set_logp_in_progress(VOS_MODULE_ID_VOSS, TRUE); +#endif + #ifndef CONFIG_CNSS if (HIFDiagReadMem(scn->hif_hdl, host_interest_item_address(scn->target_type, offsetof(struct host_interest_s, hi_failure_state)), |
