summaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2016-02-28 15:19:53 +0100
committerJohannes Berg <johannes.berg@intel.com>2016-04-05 10:50:17 +0200
commitc3732a7b37bca52bdd23aacde001f2038f9cb11a (patch)
treee74cf1a66ef12e2bc278c1b9f63b3bc752097219 /net/mac80211
parent05cf8077e54b20dddb756eaa26f3aeb5c38dd3cf (diff)
downloadlinux-c3732a7b37bca52bdd23aacde001f2038f9cb11a.tar.gz
linux-c3732a7b37bca52bdd23aacde001f2038f9cb11a.tar.bz2
linux-c3732a7b37bca52bdd23aacde001f2038f9cb11a.zip
mac80211: fix AP buffered multicast frames with queue control and txq
Buffered multicast frames must be passed to the driver directly via drv_tx instead of going through the txq, otherwise they cannot easily be scheduled to be sent after DTIM. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r--net/mac80211/tx.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 62ad5321257d..664624ef9925 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1247,7 +1247,8 @@ static void ieee80211_drv_tx(struct ieee80211_local *local,
struct txq_info *txqi;
u8 ac;
- if (info->control.flags & IEEE80211_TX_CTRL_PS_RESPONSE)
+ if ((info->flags & IEEE80211_TX_CTL_SEND_AFTER_DTIM) ||
+ (info->control.flags & IEEE80211_TX_CTRL_PS_RESPONSE))
goto tx_normal;
if (!ieee80211_is_data(hdr->frame_control))