diff options
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r-- | net/mac80211/tx.c | 11 |
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 */ |