summaryrefslogtreecommitdiff
path: root/umac
diff options
context:
space:
mode:
authorPadma, Santhosh Kumar <skpadma@codeaurora.org>2018-02-07 13:05:06 +0530
committersnandini <snandini@codeaurora.org>2018-02-09 07:45:42 -0800
commit01548b7f5cf75e2b99be137760a0cc640756ff6c (patch)
treeb91c198b858031e5193737c5133d5aa540c7a171 /umac
parent8dc369bdba08cd5506098af40c0b41710ccf0f7e (diff)
downloadqca-wfi-host-cmn-01548b7f5cf75e2b99be137760a0cc640756ff6c.tar.gz
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
Diffstat (limited to 'umac')
-rw-r--r--umac/scan/core/src/wlan_scan_filter.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/umac/scan/core/src/wlan_scan_filter.c b/umac/scan/core/src/wlan_scan_filter.c
index 6bcd44ac5..e33ebd3b0 100644
--- a/umac/scan/core/src/wlan_scan_filter.c
+++ b/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;