mac80211: add missing return code checks in AQL improvements
authorFelix Fietkau <nbd@nbd.name>
Fri, 21 Aug 2020 16:06:50 +0000 (18:06 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 21 Aug 2020 16:29:52 +0000 (18:29 +0200)
Fixes throughput issues with some drivers (e.g. ath10k)

Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/kernel/mac80211/patches/subsys/312-mac80211-factor-out-code-to-look-up-the-average-pack.patch
package/kernel/mac80211/patches/subsys/313-mac80211-improve-AQL-aggregation-estimation-for-low-.patch

index 105bbe2529794ee209fb7decbea80cc0a749d73f..06db852c30469fa8edfed0b0048b435cab4a4709 100644 (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);
  }
index 565d9bec436b6b547cc6d1c7437aa13a5139f64f..7f7c75db59f4a1574f2ec92345f93395b37a2c6c 100644 (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