Просмотр исходного кода

qcacmn: Avoid unlink bss in vdev INIT state

When some faulty AP changes the SSID from hidden to non-hidden
or vice versa, then unlink bss and update bss to kernel happens
multiple times. Then when disconnection happens, it causes
abnormal behavior since the bss entry looks corrupted.

So avoid unlink bss in INIT state to avoid corruption
since cfg80211_disconnected() calls
cfg80211_wdev_release_bsses(wdev) already.

Change-Id: If07d1b8fa92057c9320c9ab243b9cbef30ac21ba
CRs-Fixed: 3516816
Pragaspathi Thilagaraj 2 лет назад
Родитель
Сommit
2eb6a33153
1 измененных файлов с 5 добавлено и 1 удалено
  1. 5 1
      umac/cmn_services/utils/src/wlan_utility.c

+ 5 - 1
umac/cmn_services/utils/src/wlan_utility.c

@@ -28,6 +28,7 @@
 #include <wlan_vdev_mlme_api.h>
 #include "cfg_ucfg_api.h"
 #include <wlan_serialization_api.h>
+#include "wlan_cm_api.h"
 
 /* CRC polynomial 0xedb88320 */
 static unsigned long const wlan_shortssid_table[] = {
@@ -1867,11 +1868,14 @@ static void wlan_get_connected_vdev_handler(struct wlan_objmgr_psoc *psoc,
 
 	if (context->connected)
 		return;
+
 	op_mode = wlan_vdev_mlme_get_opmode(vdev);
 	if (op_mode != QDF_STA_MODE && op_mode != QDF_P2P_CLIENT_MODE)
 		return;
-	if (wlan_vdev_is_up(vdev) != QDF_STATUS_SUCCESS)
+
+	if (wlan_cm_is_vdev_disconnected(vdev))
 		return;
+
 	if (wlan_vdev_get_bss_peer_mac(vdev, &bss_peer_mac) !=
 	    QDF_STATUS_SUCCESS)
 		return;