diff options
| author | Siva Mullati <smullati@qti.qualcomm.com> | 2016-08-02 10:16:41 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-08-03 14:02:10 +0530 |
| commit | 9f1bd2bd33e9986a1f52ce9c5b3f37de0466d70d (patch) | |
| tree | 7bb7ed9954ce8a4cebdc28021a451a00fbd24202 | |
| parent | c030acffb7be92ca35b8af3557b54d1d4c7ddbd1 (diff) | |
qcacld-2.0: Clear scan cache in kernel cfg80211 when leaving IBSS
In current code, during IBSS join host updates the bss in
cfg80211 for that BSSID. But during IBSS leave host is not
unlinking the bss from the kernl cache. So the bss reamains
exist in the cfg80211 even after leaving IBSS.
Fix is to delete scan cache in kerenl cfg80211 and remove
BSSID from SME scan list during leave IBSS.
Change-Id: Id4dd08d72ba3fb6ed1b4037b038d888379bb9d6f
CRs-Fixed: 1049076
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index 5e82a3c550d7..347cfabf5b26 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -16642,9 +16642,14 @@ struct cfg80211_bss* wlan_hdd_cfg80211_update_bss_list( 0, #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 1, 0)) && !defined(WITH_BACKPORTS) \ && !defined(IEEE80211_PRIVACY) - WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS); + (pAdapter->device_mode == WLAN_HDD_IBSS) ? \ + WLAN_CAPABILITY_IBSS : WLAN_CAPABILITY_ESS, + (pAdapter->device_mode == WLAN_HDD_IBSS) ? \ + WLAN_CAPABILITY_IBSS : WLAN_CAPABILITY_ESS); #else - IEEE80211_BSS_TYPE_ESS, IEEE80211_PRIVACY_ANY); + (pAdapter->device_mode == WLAN_HDD_IBSS) ? \ + IEEE80211_BSS_TYPE_IBSS : IEEE80211_BSS_TYPE_ESS, + IEEE80211_PRIVACY_ANY); #endif if (bss == NULL) { hddLog(LOGE, FL("BSS not present")); @@ -19827,6 +19832,7 @@ static int __wlan_hdd_cfg80211_leave_ibss(struct wiphy *wiphy, hdd_wext_state_t *pWextState = WLAN_HDD_GET_WEXT_STATE_PTR(pAdapter); tCsrRoamProfile *pRoamProfile; hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX(pAdapter); + tHalHandle hHal = WLAN_HDD_GET_HAL_CTX(pAdapter); int status; eHalStatus hal_status; tSirUpdateIE updateIE; @@ -19874,6 +19880,13 @@ static int __wlan_hdd_cfg80211_leave_ibss(struct wiphy *wiphy, hddLog(LOGE, FL("Could not pass on PROBE_RSP_BCN data to PE")); } + /* Delete scan cache in cfg80211 and remove BSSID from SME + * scan list + */ + hddLog(LOG1, FL("clear scan cache in kernel cfg80211")); + wlan_hdd_cfg80211_update_bss_list(pAdapter, pWextState->req_bssId); + sme_remove_bssid_from_scan_list(hHal, pWextState->req_bssId ); + /* Reset WNI_CFG_PROBE_RSP Flags */ wlan_hdd_reset_prob_rspies(pAdapter); |
