diff mbox series

mac80211: allow bigger A-MSDU sizes in VHT, even if HT is limited

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

Commit Message

Felix Fietkau Sept. 16, 2020, 4:46 p.m. UTC
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(-)

Comments

Johannes Berg Sept. 16, 2020, 5:44 p.m. UTC | #1
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
Felix Fietkau Sept. 16, 2020, 6:31 p.m. UTC | #2
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 mbox series

Patch

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;