summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYun Park <yunp@qca.qualcomm.com>2015-09-03 10:17:34 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2015-09-04 04:03:39 -0700
commitcbfc55576b9ac548b0be9e8d5425dfcf82fc5fd0 (patch)
tree86bf4647035af96e888be2ed2d4c2938a249c53c
parent95537149b9f2c11498c208b1522a2f92708231f4 (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.c9
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