summaryrefslogtreecommitdiffstats
path: root/net/mac80211/rate.c
diff options
context:
space:
mode:
authorPhilipp Borgers <borgers@mi.fu-berlin.de>2021-05-19 14:20:18 +0200
committerJohannes Berg <johannes.berg@intel.com>2021-06-23 11:01:41 +0200
commitd333322361e7a099dc74df2498d3fa5fde5c4fa7 (patch)
tree3e47779ba4058966b0e9e649a1c18e0ede279676 /net/mac80211/rate.c
parentmac80211: add ieee80211_is_tx_data helper function (diff)
downloadlinux-d333322361e7a099dc74df2498d3fa5fde5c4fa7.tar.xz
linux-d333322361e7a099dc74df2498d3fa5fde5c4fa7.zip
mac80211: do not use low data rates for data frames with no ack flag
Data Frames with no ack flag set should be handled by the rate controler. Make sure we reach the rate controler by returning early from rate_control_send_low if the frame is a data frame with no ack flag. Signed-off-by: Philipp Borgers <borgers@mi.fu-berlin.de> Link: https://lore.kernel.org/r/20210519122019.92359-3-borgers@mi.fu-berlin.de Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/rate.c')
-rw-r--r--net/mac80211/rate.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/net/mac80211/rate.c b/net/mac80211/rate.c
index 63652c39c8e0..01d6407b0279 100644
--- a/net/mac80211/rate.c
+++ b/net/mac80211/rate.c
@@ -396,6 +396,10 @@ static bool rate_control_send_low(struct ieee80211_sta *pubsta,
int mcast_rate;
bool use_basicrate = false;
+ if (ieee80211_is_tx_data(txrc->skb) &&
+ info->flags & IEEE80211_TX_CTL_NO_ACK)
+ return false;
+
if (!pubsta || rc_no_data_or_no_ack_use_min(txrc)) {
__rate_control_send_low(txrc->hw, sband, pubsta, info,
txrc->rate_idx_mask);