From: Eliad Peller Date: Thu, 27 Mar 2014 06:58:32 +0000 (+0200) Subject: wpa_supplicant: Override HT A-MPDU size if VHT A-MPDU was overridden X-Git-Tag: hostap_2_2~444 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4f560cdee34e0689a698b38beaeae3d48dadd913;p=thirdparty%2Fhostap.git wpa_supplicant: Override HT A-MPDU size if VHT A-MPDU was overridden According to the standard, if the max A-MPDU VHT cap is <= 3, we have to adjust the max A-MPDU HT cap to the same value. Otherwise it should be set to 3. Take care of it when the max VHT A-MPDU value is overridden. Signed-off-by: Eliad Peller --- diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c index dce1c008b..b47e42358 100644 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c @@ -2957,6 +2957,10 @@ void wpa_supplicant_apply_vht_overrides( { struct ieee80211_vht_capabilities *vhtcaps; struct ieee80211_vht_capabilities *vhtcaps_mask; +#ifdef CONFIG_HT_OVERRIDES + int max_ampdu; + const u32 max_ampdu_mask = VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MAX; +#endif /* CONFIG_HT_OVERRIDES */ if (!ssid) return; @@ -2972,6 +2976,20 @@ void wpa_supplicant_apply_vht_overrides( vhtcaps->vht_capabilities_info = ssid->vht_capa; vhtcaps_mask->vht_capabilities_info = ssid->vht_capa_mask; +#ifdef CONFIG_HT_OVERRIDES + /* if max ampdu is <= 3, we have to make the HT cap the same */ + if (ssid->vht_capa_mask & max_ampdu_mask) { + max_ampdu = (ssid->vht_capa & max_ampdu_mask) >> + find_first_bit(max_ampdu_mask); + + max_ampdu = max_ampdu < 3 ? max_ampdu : 3; + wpa_set_ampdu_factor(wpa_s, + (void *) params->htcaps, + (void *) params->htcaps_mask, + max_ampdu); + } +#endif /* CONFIG_HT_OVERRIDES */ + #define OVERRIDE_MCS(i) \ if (ssid->vht_tx_mcs_nss_ ##i >= 0) { \ vhtcaps_mask->vht_supported_mcs_set.tx_map |= \