aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/tx.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r--net/mac80211/tx.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index 9bd9faac3c3c..a757dcc1208d 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -303,8 +303,7 @@ static void purge_old_ps_buffers(struct ieee80211_local *local)
303 303
304 list_for_each_entry_rcu(sdata, &local->interfaces, list) { 304 list_for_each_entry_rcu(sdata, &local->interfaces, list) {
305 struct ieee80211_if_ap *ap; 305 struct ieee80211_if_ap *ap;
306 if (sdata->dev == local->mdev || 306 if (sdata->vif.type != IEEE80211_IF_TYPE_AP)
307 sdata->vif.type != IEEE80211_IF_TYPE_AP)
308 continue; 307 continue;
309 ap = &sdata->u.ap; 308 ap = &sdata->u.ap;
310 skb = skb_dequeue(&ap->ps_bc_buf); 309 skb = skb_dequeue(&ap->ps_bc_buf);
@@ -346,8 +345,12 @@ ieee80211_tx_h_multicast_ps_buf(struct ieee80211_tx_data *tx)
346 * This is done either by the hardware or us. 345 * This is done either by the hardware or us.
347 */ 346 */
348 347
349 /* not AP/IBSS or ordered frame */ 348 /* powersaving STAs only in AP/VLAN mode */
350 if (!tx->sdata->bss || (tx->fc & IEEE80211_FCTL_ORDER)) 349 if (!tx->sdata->bss)
350 return TX_CONTINUE;
351
352 /* no buffering for ordered frames */
353 if (tx->fc & IEEE80211_FCTL_ORDER)
351 return TX_CONTINUE; 354 return TX_CONTINUE;
352 355
353 /* no stations in PS mode */ 356 /* no stations in PS mode */