mac80211: unconditionally set IEEE80211_TX_CTL_SEND_AFTER_DTIM
authorJohannes Berg <johannes@sipsolutions.net>
Thu, 29 Oct 2009 11:19:21 +0000 (12:19 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 30 Oct 2009 20:50:39 +0000 (16:50 -0400)
When mac80211 is asked to buffer multicast frames
in AP mode, it will not set the flag indicating
that the frames should be sent after the DTIM
beacon for those frames buffered in software. Fix
this little inconsistency by always setting that
flag in the buffering code path.

Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/tx.c

index 8595d14c774c50c1216103adf6f4d18058caf1b7..844609c23268ba83f90d1184dda65f4d94300609 100644 (file)
@@ -317,12 +317,11 @@ ieee80211_tx_h_multicast_ps_buf(struct ieee80211_tx_data *tx)
        if (!atomic_read(&tx->sdata->bss->num_sta_ps))
                return TX_CONTINUE;
 
-       /* buffered in hardware */
-       if (!(tx->local->hw.flags & IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING)) {
-               info->flags |= IEEE80211_TX_CTL_SEND_AFTER_DTIM;
+       info->flags |= IEEE80211_TX_CTL_SEND_AFTER_DTIM;
 
+       /* device releases frame after DTIM beacon */
+       if (!(tx->local->hw.flags & IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING))
                return TX_CONTINUE;
-       }
 
        /* buffered in mac80211 */
        if (tx->local->total_ps_buffered >= TOTAL_MAX_TX_BUFFER)