aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/sta_info.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c
index 1fb4770a7d13..fa0823892b2d 100644
--- a/net/mac80211/sta_info.c
+++ b/net/mac80211/sta_info.c
@@ -750,15 +750,6 @@ int __must_check __sta_info_destroy(struct sta_info *sta)
750 750
751 sta->dead = true; 751 sta->dead = true;
752 752
753 if (test_sta_flag(sta, WLAN_STA_PS_STA)) {
754 BUG_ON(!sdata->bss);
755
756 clear_sta_flag(sta, WLAN_STA_PS_STA);
757
758 atomic_dec(&sdata->bss->num_sta_ps);
759 sta_info_recalc_tim(sta);
760 }
761
762 local->num_sta--; 753 local->num_sta--;
763 local->sta_generation++; 754 local->sta_generation++;
764 755
@@ -790,6 +781,15 @@ int __must_check __sta_info_destroy(struct sta_info *sta)
790 */ 781 */
791 synchronize_rcu(); 782 synchronize_rcu();
792 783
784 if (test_sta_flag(sta, WLAN_STA_PS_STA)) {
785 BUG_ON(!sdata->bss);
786
787 clear_sta_flag(sta, WLAN_STA_PS_STA);
788
789 atomic_dec(&sdata->bss->num_sta_ps);
790 sta_info_recalc_tim(sta);
791 }
792
793 for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) { 793 for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) {
794 local->total_ps_buffered -= skb_queue_len(&sta->ps_tx_buf[ac]); 794 local->total_ps_buffered -= skb_queue_len(&sta->ps_tx_buf[ac]);
795 __skb_queue_purge(&sta->ps_tx_buf[ac]); 795 __skb_queue_purge(&sta->ps_tx_buf[ac]);