Message ID | 20200916164611.8022-1-nbd@nbd.name |
---|---|
State | New |
Headers | show |
Series | mac80211: allow bigger A-MSDU sizes in VHT, even if HT is limited | expand |
On Wed, 2020-09-16 at 18:46 +0200, Felix Fietkau wrote: > Some APs (e.g. Asus RT-AC88U) have been observed to report an HT MSDU size > limit of 3839 and a VHT limit of 7991. These APs can handle bigger frames > than 3839 bytes just fine, so we should remove the VHT limit based on the > HT capabilities. This improves tx throughput. I'm not really convinced that we can do this, since we don't track HT/VHT limits separately. IOW, to be behaving according to the AP you mention, we'd have to know when building an A-MSDU whether it's going to use HT or VHT rates, but we don't track that at all ... johannes
On 2020-09-16 19:44, Johannes Berg wrote: > On Wed, 2020-09-16 at 18:46 +0200, Felix Fietkau wrote: >> Some APs (e.g. Asus RT-AC88U) have been observed to report an HT MSDU size >> limit of 3839 and a VHT limit of 7991. These APs can handle bigger frames >> than 3839 bytes just fine, so we should remove the VHT limit based on the >> HT capabilities. This improves tx throughput. > > I'm not really convinced that we can do this, since we don't track > HT/VHT limits separately. > > IOW, to be behaving according to the AP you mention, we'd have to know > when building an A-MSDU whether it's going to use HT or VHT rates, but > we don't track that at all ... These comments don't make sense to me. A-MSDU limit is tracked per sta, and on all the implementations I've looked at, HT rates are never used to transmit to a peer that can do VHT. It would be unnecessary to do that anyway, since VHT modulations are a superset of HT modulations with just some header differences. On another note, VHT already supports bigger A-MSDU limits than HT in the code below that check. - Felix
diff --git a/net/mac80211/vht.c b/net/mac80211/vht.c index 9c6045f9c24d..7e601d067d53 100644 --- a/net/mac80211/vht.c +++ b/net/mac80211/vht.c @@ -315,10 +315,6 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata, sta->sta.bandwidth = ieee80211_sta_cur_vht_bw(sta); - /* If HT IE reported 3839 bytes only, stay with that size. */ - if (sta->sta.max_amsdu_len == IEEE80211_MAX_MPDU_LEN_HT_3839) - return; - switch (vht_cap->cap & IEEE80211_VHT_CAP_MAX_MPDU_MASK) { case IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454: sta->sta.max_amsdu_len = IEEE80211_MAX_MPDU_LEN_VHT_11454;
Some APs (e.g. Asus RT-AC88U) have been observed to report an HT MSDU size limit of 3839 and a VHT limit of 7991. These APs can handle bigger frames than 3839 bytes just fine, so we should remove the VHT limit based on the HT capabilities. This improves tx throughput. Signed-off-by: Felix Fietkau <nbd@nbd.name> --- net/mac80211/vht.c | 4 ---- 1 file changed, 4 deletions(-)