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:
parent
3ae8b7b7a2
commit
4f560cdee3
1 changed files with 18 additions and 0 deletions
|
@ -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 |= \
|
||||
|
|
Loading…
Reference in a new issue