atheros: Add support for IEEE 802.11w configuration
This commit is contained in:
parent
3f3602386e
commit
a1ca02927a
3 changed files with 17 additions and 0 deletions
|
@ -203,6 +203,9 @@ int hostapd_set_drv_ieee8021x(struct hostapd_data *hapd, const char *ifname,
|
||||||
params.wpa_pairwise = hapd->conf->wpa_pairwise;
|
params.wpa_pairwise = hapd->conf->wpa_pairwise;
|
||||||
params.wpa_key_mgmt = hapd->conf->wpa_key_mgmt;
|
params.wpa_key_mgmt = hapd->conf->wpa_key_mgmt;
|
||||||
params.rsn_preauth = hapd->conf->rsn_preauth;
|
params.rsn_preauth = hapd->conf->rsn_preauth;
|
||||||
|
#ifdef CONFIG_IEEE80211W
|
||||||
|
params.ieee80211w = hapd->conf->ieee80211w;
|
||||||
|
#endif /* CONFIG_IEEE80211W */
|
||||||
}
|
}
|
||||||
return hostapd_set_ieee8021x(hapd, ¶ms);
|
return hostapd_set_ieee8021x(hapd, ¶ms);
|
||||||
}
|
}
|
||||||
|
|
|
@ -678,6 +678,7 @@ struct wpa_bss_params {
|
||||||
int wpa_pairwise;
|
int wpa_pairwise;
|
||||||
int wpa_key_mgmt;
|
int wpa_key_mgmt;
|
||||||
int rsn_preauth;
|
int rsn_preauth;
|
||||||
|
enum mfp_options ieee80211w;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define WPA_STA_AUTHORIZED BIT(0)
|
#define WPA_STA_AUTHORIZED BIT(0)
|
||||||
|
|
|
@ -315,6 +315,14 @@ atheros_configure_wpa(struct atheros_driver_data *drv,
|
||||||
v = 0;
|
v = 0;
|
||||||
if (params->rsn_preauth)
|
if (params->rsn_preauth)
|
||||||
v |= BIT(0);
|
v |= BIT(0);
|
||||||
|
#ifdef CONFIG_IEEE80211W
|
||||||
|
if (params->ieee80211w != NO_MGMT_FRAME_PROTECTION) {
|
||||||
|
v |= BIT(7);
|
||||||
|
if (params->ieee80211w == MGMT_FRAME_PROTECTION_REQUIRED)
|
||||||
|
v |= BIT(6);
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_IEEE80211W */
|
||||||
|
|
||||||
wpa_printf(MSG_DEBUG, "%s: rsn capabilities=0x%x",
|
wpa_printf(MSG_DEBUG, "%s: rsn capabilities=0x%x",
|
||||||
__func__, params->rsn_preauth);
|
__func__, params->rsn_preauth);
|
||||||
if (set80211param(drv, IEEE80211_PARAM_RSNCAPS, v)) {
|
if (set80211param(drv, IEEE80211_PARAM_RSNCAPS, v)) {
|
||||||
|
@ -466,6 +474,11 @@ atheros_set_key(const char *ifname, void *priv, enum wpa_alg alg,
|
||||||
case WPA_ALG_CCMP:
|
case WPA_ALG_CCMP:
|
||||||
cipher = IEEE80211_CIPHER_AES_CCM;
|
cipher = IEEE80211_CIPHER_AES_CCM;
|
||||||
break;
|
break;
|
||||||
|
#ifdef CONFIG_IEEE80211W
|
||||||
|
case WPA_ALG_IGTK:
|
||||||
|
cipher = IEEE80211_CIPHER_AES_CMAC;
|
||||||
|
break;
|
||||||
|
#endif /* CONFIG_IEEE80211W */
|
||||||
default:
|
default:
|
||||||
printf("%s: unknown/unsupported algorithm %d\n",
|
printf("%s: unknown/unsupported algorithm %d\n",
|
||||||
__func__, alg);
|
__func__, alg);
|
||||||
|
|
Loading…
Reference in a new issue