qcacmn: Don't unlink connected bssid

In dual station case, wlan0 is connected to AP, wlan1
connects to the same ap and will get failed because two
interfaces can not connect to same band (same ap).
At present wlan1 will do unlink bss of ap after connect fail.
This may corrupt the bss tree in kernel because the bss is
still pointed by wlan0’s wdev -> current_bss.
Fix by avoid the unlink bss if the bss is still connected
in any interfaces.

Change-Id: I27c76eca2d4f130addabbdc2600f6959d24c8511
CRs-Fixed: 2837496
This commit is contained in:
Liangwei Dong
2020-12-14 15:22:03 +08:00
committed by snandini
parent 566de9aa04
commit d4b3e3d043
3 changed files with 100 additions and 8 deletions

View File

@@ -298,14 +298,17 @@ void wlan_cfg80211_inform_bss_frame(struct wlan_objmgr_pdev *pdev,
/**
* __wlan_cfg80211_unlink_bss_list() - flush bss from the kernel cache
* @wiphy: wiphy
* @pdev: pdev object
* @bssid: bssid of the BSS to find
* @ssid: ssid of the BSS to find
* @ssid_len: ssid len of of the BSS to find
*
* Return: None
* Return: QDF_STATUS
*/
void __wlan_cfg80211_unlink_bss_list(struct wiphy *wiphy, uint8_t *bssid,
uint8_t *ssid, uint8_t ssid_len);
QDF_STATUS __wlan_cfg80211_unlink_bss_list(struct wiphy *wiphy,
struct wlan_objmgr_pdev *pdev,
uint8_t *bssid, uint8_t *ssid,
uint8_t ssid_len);
/**
* wlan_cfg80211_get_bss() - Get the bss entry matching the chan, bssid and ssid