mac80211: fix AP buffered multicast frames with queue control and txq
authorFelix Fietkau <nbd@openwrt.org>
Sun, 28 Feb 2016 14:19:53 +0000 (15:19 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 5 Apr 2016 08:50:17 +0000 (10:50 +0200)
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>
net/mac80211/tx.c

index 62ad532..664624e 100644 (file)
@@ -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))