diff options
| author | Abhishek Singh <absingh@qti.qualcomm.com> | 2016-05-17 16:17:58 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-05-18 17:49:05 +0530 |
| commit | d5d6e4cd3bc13d45c7a5d7b632250721cc0bd07c (patch) | |
| tree | 153b4f3d661679b588ad76e304fab01dd63eb90c | |
| parent | 08513a065488aef7a72e47cf7974071e8dff4c95 (diff) | |
qcacld-2.0: Drop connect if MFPEnabled is set but AP is non-PMF
If ieee80211w=2 or pmf=2 is an explicit configuration in the
supplicant configuration MFPEnabled is set and driver assume it
as a PMF required connection, even if AP is in open security
mode.
Now when disconnect is received from supplicant driver sends a
protected deauth and assert is observed as firmware do not have
any valid key.
To fix this if ieee80211w=2 or pmf=2 is an explicit configuration
in the supplicant configuration but peer AP is non-PMF drop the
connection request.
Change-Id: I40faf63df4e95b367d66e9b51ff165759989a1d1
CRs-Fixed: 1011976
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_cfg80211.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/CORE/HDD/src/wlan_hdd_cfg80211.c b/CORE/HDD/src/wlan_hdd_cfg80211.c index f6646a90433a..427401f0fef6 100644 --- a/CORE/HDD/src/wlan_hdd_cfg80211.c +++ b/CORE/HDD/src/wlan_hdd_cfg80211.c @@ -17744,6 +17744,21 @@ int wlan_hdd_cfg80211_connect_start( hdd_adapter_t *pAdapter, pRoamProfile->vht_channel_width = ch_width; } /* + * if MFPEnabled is set but the peer AP is non-PMF i.e ieee80211w=2 + * or pmf=2 is an explicit configuration in the supplicant + * configuration, drop the connection request. + */ + if (pWextState->roamProfile.MFPEnabled && + !(pWextState->roamProfile.MFPRequired || + pWextState->roamProfile.MFPCapable)) { + hddLog(LOGE, + FL("Drop connect req as supplicant has indicated PMF required for the non-PMF peer. MFPEnabled %d MFPRequired %d MFPCapable %d"), + pWextState->roamProfile.MFPEnabled, + pWextState->roamProfile.MFPRequired, + pWextState->roamProfile.MFPCapable); + return -EINVAL; + } + /* * Change conn_state to connecting before sme_RoamConnect(), * because sme_RoamConnect() has a direct path to call * hdd_smeRoamCallback(), which will change the conn_state |
