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 <eliadx.peller@intel.com>
This commit is contained in:
Eliad Peller 2014-03-27 08:58:32 +02:00 committed by Jouni Malinen
parent 3ae8b7b7a2
commit 4f560cdee3

View file

@ -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 |= \