diff options
| author | Yun Park <yunp@qca.qualcomm.com> | 2015-11-25 07:48:07 -0800 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2015-12-02 16:50:04 +0530 |
| commit | f7d460754867d158ee712d62d304ba5bd0fa7101 (patch) | |
| tree | aa21730dfe8160b37ff51c29cc68099499a83bab | |
| parent | 648abdb8ed56bdffaa0efd220a895f52eb90bdf0 (diff) | |
qcacld: send CLIENT_CONNECT message to IPA after enable WDI pipes
Since CLIENT_CONNECT message is sent to IPA before enabling WDI pipes,
CLIENT_CONNECT message count could be more than CLIENT_DISCONNECT
count, and this could cause an abnormal behavior in the IPACM.
Change-Id: I03d30c7f82aadf83979084b7e65b8ed14565588d
CRs-fixed: 941894
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_ipa.c | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/CORE/HDD/src/wlan_hdd_ipa.c b/CORE/HDD/src/wlan_hdd_ipa.c index 7f2edef373f3..41840ce4027c 100644 --- a/CORE/HDD/src/wlan_hdd_ipa.c +++ b/CORE/HDD/src/wlan_hdd_ipa.c @@ -4325,8 +4325,30 @@ int hdd_ipa_wlan_evt(hdd_adapter_t *adapter, uint8_t sta_id, vos_lock_release(&hdd_ipa->event_lock); return 0; } - vos_lock_release(&hdd_ipa->event_lock); + + /* Enable IPA UC Data PIPEs when first STA connected */ + if ((0 == hdd_ipa->sap_num_connected_sta) +#ifdef IPA_UC_STA_OFFLOAD + && (!hdd_ipa_uc_sta_is_enabled(hdd_ipa) + || !hdd_ipa->sta_connected) #endif + && (VOS_TRUE == hdd_ipa->uc_loaded) + ) { + ret = hdd_ipa_uc_handle_first_con(hdd_ipa); + if (ret) { + vos_lock_release(&hdd_ipa->event_lock); + HDD_IPA_LOG(VOS_TRACE_LEVEL_ERROR, + "%s: handle 1st con ret %d", + adapter->dev->name, ret); + return ret; + } + } + + hdd_ipa->sap_num_connected_sta++; + hdd_ipa->pending_cons_req = VOS_FALSE; + + vos_lock_release(&hdd_ipa->event_lock); +#endif /* IPA_UC_OFFLOAD */ meta.msg_type = type; meta.msg_len = (sizeof(struct ipa_wlan_msg_ex) + @@ -4364,31 +4386,7 @@ int hdd_ipa_wlan_evt(hdd_adapter_t *adapter, uint8_t sta_id, return ret; } hdd_ipa->stats.num_send_msg++; -#ifdef IPA_UC_OFFLOAD - vos_lock_acquire(&hdd_ipa->event_lock); - /* Enable IPA UC Data PIPEs when first STA connected */ - if ((0 == hdd_ipa->sap_num_connected_sta) -#ifdef IPA_UC_STA_OFFLOAD - && (!hdd_ipa_uc_sta_is_enabled(hdd_ipa) - || !hdd_ipa->sta_connected) -#endif - && (VOS_TRUE == hdd_ipa->uc_loaded) - ) { - ret = hdd_ipa_uc_handle_first_con(hdd_ipa); - if (ret) { - vos_lock_release(&hdd_ipa->event_lock); - HDD_IPA_LOG(VOS_TRACE_LEVEL_ERROR, - "%s: handle 1st con ret %d", - adapter->dev->name, ret); - return ret; - } - } - - hdd_ipa->sap_num_connected_sta++; - hdd_ipa->pending_cons_req = VOS_FALSE; - vos_lock_release(&hdd_ipa->event_lock); -#endif /* IPA_UC_OFFLOAD */ return ret; case WLAN_CLIENT_DISCONNECT: |
