Use per-interface type driver key_mgmt capabilities when possible
Use key_mgmt_iftype instead of key_mgmt when the specific interface type is known by the context of the operation. Use per interface type AKM capabilities in capa.key_mgmt_iftype array based on the wpa_supplicant context instead of using capa.key_mgmt to determine the driver AKM capability. Signed-off-by: Veerendranath Jakkam <vjakkam@codeaurora.org>
This commit is contained in:
parent
8d7502809c
commit
3790f3a6ee
3 changed files with 9 additions and 3 deletions
|
@ -1136,7 +1136,8 @@ static struct wpa_ssid * wpas_dpp_add_network(struct wpa_supplicant *wpa_s,
|
||||||
|
|
||||||
res = wpa_drv_get_capa(wpa_s, &capa);
|
res = wpa_drv_get_capa(wpa_s, &capa);
|
||||||
if (res == 0 &&
|
if (res == 0 &&
|
||||||
!(capa.key_mgmt & WPA_DRIVER_CAPA_KEY_MGMT_SAE) &&
|
!(capa.key_mgmt_iftype[WPA_IF_STATION] &
|
||||||
|
WPA_DRIVER_CAPA_KEY_MGMT_SAE) &&
|
||||||
!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SAE)) {
|
!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SAE)) {
|
||||||
wpa_printf(MSG_DEBUG,
|
wpa_printf(MSG_DEBUG,
|
||||||
"DPP: SAE not supported by the driver");
|
"DPP: SAE not supported by the driver");
|
||||||
|
|
|
@ -946,7 +946,8 @@ static int interworking_set_hs20_params(struct wpa_supplicant *wpa_s,
|
||||||
struct wpa_driver_capa capa;
|
struct wpa_driver_capa capa;
|
||||||
|
|
||||||
res = wpa_drv_get_capa(wpa_s, &capa);
|
res = wpa_drv_get_capa(wpa_s, &capa);
|
||||||
if (res == 0 && capa.key_mgmt & WPA_DRIVER_CAPA_KEY_MGMT_FT) {
|
if (res == 0 && capa.key_mgmt_iftype[WPA_IF_STATION] &
|
||||||
|
WPA_DRIVER_CAPA_KEY_MGMT_FT) {
|
||||||
key_mgmt = wpa_s->conf->pmf != NO_MGMT_FRAME_PROTECTION ?
|
key_mgmt = wpa_s->conf->pmf != NO_MGMT_FRAME_PROTECTION ?
|
||||||
"WPA-EAP WPA-EAP-SHA256 FT-EAP" :
|
"WPA-EAP WPA-EAP-SHA256 FT-EAP" :
|
||||||
"WPA-EAP FT-EAP";
|
"WPA-EAP FT-EAP";
|
||||||
|
|
|
@ -188,6 +188,7 @@ static void wpas_wps_security_workaround(struct wpa_supplicant *wpa_s,
|
||||||
const u8 *ie;
|
const u8 *ie;
|
||||||
struct wpa_ie_data adv;
|
struct wpa_ie_data adv;
|
||||||
int wpa2 = 0, ccmp = 0;
|
int wpa2 = 0, ccmp = 0;
|
||||||
|
enum wpa_driver_if_type iftype;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Many existing WPS APs do not know how to negotiate WPA2 or CCMP in
|
* Many existing WPS APs do not know how to negotiate WPA2 or CCMP in
|
||||||
|
@ -239,9 +240,12 @@ static void wpas_wps_security_workaround(struct wpa_supplicant *wpa_s,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
iftype = ssid->p2p_group ? WPA_IF_P2P_CLIENT : WPA_IF_STATION;
|
||||||
|
|
||||||
if (ccmp && !(ssid->pairwise_cipher & WPA_CIPHER_CCMP) &&
|
if (ccmp && !(ssid->pairwise_cipher & WPA_CIPHER_CCMP) &&
|
||||||
(ssid->pairwise_cipher & WPA_CIPHER_TKIP) &&
|
(ssid->pairwise_cipher & WPA_CIPHER_TKIP) &&
|
||||||
(capa.key_mgmt & WPA_DRIVER_CAPA_KEY_MGMT_WPA2_PSK)) {
|
(capa.key_mgmt_iftype[iftype] &
|
||||||
|
WPA_DRIVER_CAPA_KEY_MGMT_WPA2_PSK)) {
|
||||||
wpa_printf(MSG_DEBUG, "WPS: Add CCMP into the credential "
|
wpa_printf(MSG_DEBUG, "WPS: Add CCMP into the credential "
|
||||||
"based on scan results");
|
"based on scan results");
|
||||||
if (wpa_s->conf->ap_scan == 1)
|
if (wpa_s->conf->ap_scan == 1)
|
||||||
|
|
Loading…
Reference in a new issue