mac80211: add missing return code checks in AQL improvements

Fixes throughput issues with some drivers (e.g. ath10k)

Signed-off-by: Felix Fietkau <nbd@nbd.name>
master
Felix Fietkau 2020-08-21 18:06:50 +02:00
parent 734a8c46e7
commit 010682067b
2 changed files with 8 additions and 6 deletions

View File

@ -104,7 +104,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
}
EXPORT_SYMBOL_GPL(ieee80211_calc_rx_airtime);
@@ -530,46 +546,56 @@ static bool ieee80211_fill_rate_info(str
@@ -530,46 +546,57 @@ static bool ieee80211_fill_rate_info(str
return false;
}
@ -179,7 +179,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+{
+ struct ieee80211_rx_status stat;
+
+ ieee80211_fill_rx_status(&stat, hw, rate, ri, band, len);
+ if (ieee80211_fill_rx_status(&stat, hw, rate, ri, band, len))
+ return 0;
+
return ieee80211_calc_rx_airtime(hw, &stat, len);
}

View File

@ -12,7 +12,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/net/mac80211/airtime.c
+++ b/net/mac80211/airtime.c
@@ -646,27 +646,40 @@ u32 ieee80211_calc_expected_tx_airtime(s
@@ -647,27 +647,41 @@ u32 ieee80211_calc_expected_tx_airtime(s
if (pubsta) {
struct sta_info *sta = container_of(pubsta, struct sta_info,
sta);
@ -26,11 +26,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
- if (!(rate->flags & (IEEE80211_TX_RC_VHT_MCS |
- IEEE80211_TX_RC_MCS)))
- ampdu = false;
+ ieee80211_fill_rx_status(&stat, hw, rate, ri, band, len);
+
+ if (ieee80211_fill_rx_status(&stat, hw, rate, ri, band, len))
+ return 0;
+ if (stat.encoding == RX_ENC_LEGACY || !ampdu)
+ return ieee80211_calc_rx_airtime(hw, &stat, len);
+
+ duration = ieee80211_get_rate_duration(hw, &stat, &overhead);
/*
* Assume that HT/VHT transmission on any AC except VO will