diff options
| author | Yun Park <yunp@qca.qualcomm.com> | 2015-09-03 10:17:34 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2015-09-04 04:03:39 -0700 |
| commit | cbfc55576b9ac548b0be9e8d5425dfcf82fc5fd0 (patch) | |
| tree | 86bf4647035af96e888be2ed2d4c2938a249c53c | |
| parent | 95537149b9f2c11498c208b1522a2f92708231f4 (diff) | |
qcacld: Clean up HDD IPA interface when SSR WLAN shutdown
During SSR WLAN shutdown, since STOP_BSS_EVENT is not sent,
HDD_IPA interfaces are not cleaned.
After SSR reinit WLAN, when WLAN_AP_CONNECT event occurs,
since ipa_context is not NULL, IPA_OFFLOAD_ENABLE WMI message
is not sent to FW. Later, when WLAN_AP_DISCONNECT event occurs
and send IPA_OFFLOAD_DISABLE WMI message, crash happens since
it is already disabled in FW.
So added a code to clean up HDD IPA interface when SSR WLAN shutdown.
Change-Id: I951104057e4524b23c0c613c7ec7cb17079e8ecc
CRs-Fixed: 901481
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_ipa.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/CORE/HDD/src/wlan_hdd_ipa.c b/CORE/HDD/src/wlan_hdd_ipa.c index b529877a908f..7ce98fd6debc 100644 --- a/CORE/HDD/src/wlan_hdd_ipa.c +++ b/CORE/HDD/src/wlan_hdd_ipa.c @@ -509,6 +509,7 @@ static void hdd_ipa_msg_free_fn(void *buff, uint32_t len, uint32_t type); extern int process_wma_set_command(int sessid, int paramid, int sval, int vpdev); #endif /* IPA_UC_OFFLOAD */ +static void hdd_ipa_cleanup_iface(struct hdd_ipa_iface_context *iface_context); bool hdd_ipa_is_enabled(hdd_context_t *hdd_ctx) { @@ -1872,10 +1873,18 @@ int hdd_ipa_uc_ssr_deinit() { struct hdd_ipa_priv *hdd_ipa = ghdd_ipa; int idx; + struct hdd_ipa_iface_context *iface_context; if (!hdd_ipa_uc_is_enabled(hdd_ipa)) return 0; + /*Clean up HDD IPA interfaces */ + for (idx = 0; idx < HDD_IPA_MAX_IFACE; idx++) { + iface_context = &hdd_ipa->iface_context[idx]; + if (iface_context) + hdd_ipa_cleanup_iface(iface_context); + } + /* After SSR, wlan driver reloads FW again. But we need to protect * IPA submodule during SSR transient state. So deinit basic IPA * UC host side to be in sync with reloaded FW during SSR |
