Browse Source

qcacmn: Fix hidden ssid match in OWE

OWE SSID is hidden in OWE transition mode. When supplicant detects
connection to OWE transition mode, it issues connect with required
SSID to driver. But that ssid does not present in driver scan cache
as it is hidden. Instead of this ssid, driver scan cache has NULL
entry. This can result in connection failure due to mismatch in ssid.

In normal hidden ssid cases, supplicant issues scan with specific
ssid which helps to update driver scan cache with required ssid. SSID
is also hidden in OWE transition mode, but supplicant does not issue
scan with specific ssid which results in NULL entry in driver scan
cache for that SSID.

Fix this issue by explicit check for OWE if it is hidden.

Change-Id: I95e6b9af37e62c56b4b890090c33d53f89fed731
CRs-Fixed: 2185576
Padma, Santhosh Kumar 7 years ago
parent
commit
01548b7f5c
1 changed files with 13 additions and 0 deletions
  1. 13 0
      umac/scan/core/src/wlan_scan_filter.c

+ 13 - 0
umac/scan/core/src/wlan_scan_filter.c

@@ -919,6 +919,19 @@ bool scm_filter_match(struct wlan_objmgr_psoc *psoc,
 			}
 		}
 	}
+	/*
+	 * In OWE transition mode, ssid is hidden. And supplicant does not issue
+	 * scan with specific ssid prior to connect as in other hidden ssid
+	 * cases. Add explicit check to allow OWE when ssid is hidden.
+	 */
+	if (!match && util_scan_entry_is_hidden_ap(db_entry)) {
+		for (i = 0; i < filter->num_of_auth; i++) {
+			if (filter->auth_type[i] == WLAN_AUTH_TYPE_OWE) {
+				match = true;
+				break;
+			}
+		}
+	}
 	if (!match && filter->num_of_ssid)
 		return false;