wlan: Always update the bss in cfg80211 before connection.
In wlan_hdd_cfg80211_inform_bss, cfg80211_inform_bss is called
only if bss is not present in kernel bss list. This might leads
to a scenario that bss is present when checked but get expired
before connect result are sent to cfg80211 resulting the kernel
not entering in connected state.
Always call cfg80211_inform_bss before sending connect result to
update the bss list in kernel. This updates the bss in the list
and increase its expiry time to IEEE80211_SCAN_RESULT_EXPIRE time.
Change-Id: I0e2cede3f742b769a78cadf993e7b5f0f2f9472f
CRs-Fixed: 676491
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c
index b79552f..c0fb57c 100644
--- a/CORE/HDD/src/wlan_hdd_cfg80211.c
+++ b/CORE/HDD/src/wlan_hdd_cfg80211.c
@@ -5819,23 +5819,13 @@
return NULL;
}
- bss = cfg80211_get_bss(wiphy, chan, pBssDesc->bssId,
- &roamProfile->SSID.ssId[0], roamProfile->SSID.length,
- WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS);
- if (bss == NULL)
- {
- rssi = (VOS_MIN ((pBssDesc->rssi + pBssDesc->sinr), 0))*100;
+ rssi = (VOS_MIN ((pBssDesc->rssi + pBssDesc->sinr), 0))*100;
- return (cfg80211_inform_bss(wiphy, chan, pBssDesc->bssId,
+ return cfg80211_inform_bss(wiphy, chan, pBssDesc->bssId,
le64_to_cpu(*(__le64 *)pBssDesc->timeStamp),
pBssDesc->capabilityInfo,
pBssDesc->beaconInterval, ie, ie_length,
- rssi, GFP_KERNEL ));
-}
- else
- {
- return bss;
- }
+ rssi, GFP_KERNEL );
}