#endif /* CONFIG_WNM */
interworking_process_assoc_resp(wpa_s, data->assoc_info.resp_ies,
data->assoc_info.resp_ies_len);
- if (wpa_s->hw_capab == CAPAB_VHT &&
+ if ((wpa_s->hw_capab & BIT(CAPAB_VHT)) &&
get_ie(data->assoc_info.resp_ies,
data->assoc_info.resp_ies_len, WLAN_EID_VHT_CAP))
wpa_s->ieee80211ac = 1;
u16 i;
for (i = 0; i < wpa_s->hw.num_modes; i++) {
- if (wpa_s->hw.modes[i].vht_capab) {
- wpa_s->hw_capab = CAPAB_VHT;
- break;
- }
-
- if (wpa_s->hw.modes[i].ht_capab &
- HT_CAP_INFO_SUPP_CHANNEL_WIDTH_SET)
- wpa_s->hw_capab = CAPAB_HT40;
- else if (wpa_s->hw.modes[i].ht_capab &&
- wpa_s->hw_capab == CAPAB_NO_HT_VHT)
- wpa_s->hw_capab = CAPAB_HT;
+ if (wpa_s->hw.modes[i].eht_capab[IEEE80211_MODE_INFRA].
+ eht_supported)
+ wpa_s->hw_capab |= BIT(CAPAB_EHT);
+ if (wpa_s->hw.modes[i].he_capab[IEEE80211_MODE_INFRA].
+ he_supported)
+ wpa_s->hw_capab |= BIT(CAPAB_HE);
+ if (wpa_s->hw.modes[i].vht_capab)
+ wpa_s->hw_capab |= BIT(CAPAB_VHT);
+ if (wpa_s->hw.modes[i].ht_capab)
+ wpa_s->hw_capab |= BIT(CAPAB_HT);
}
wpa_s->support_6ghz = wpas_is_6ghz_supported(wpa_s, false);
}
};
+enum local_hw_capab {
+ CAPAB_HT,
+ CAPAB_VHT,
+ CAPAB_HE,
+ CAPAB_EHT,
+};
+
/**
* struct wpa_supplicant - Internal data for wpa_supplicant interface
*
u16 num_modes;
u16 flags;
} hw;
- enum local_hw_capab {
- CAPAB_NO_HT_VHT,
- CAPAB_HT,
- CAPAB_HT40,
- CAPAB_VHT,
- } hw_capab;
+ unsigned int hw_capab; /* bitmap of enum local_hw_capab bits */
#ifdef CONFIG_MACSEC
struct ieee802_1x_kay *kay;
#endif /* CONFIG_MACSEC */