diff --git a/mac80211.c b/mac80211.c index 68b2f34d..0b4152f2 100644 --- a/mac80211.c +++ b/mac80211.c @@ -506,12 +506,10 @@ mt76_check_ps(struct mt76_dev *dev, struct sk_buff *skb) if (!!test_bit(MT_WCID_FLAG_PS, &wcid->flags) == ps) return; - if (ps) { + if (ps) set_bit(MT_WCID_FLAG_PS, &wcid->flags); - mt76_stop_tx_queues(dev, sta, true); - } else { + else clear_bit(MT_WCID_FLAG_PS, &wcid->flags); - } dev->drv->sta_ps(dev, sta, ps); ieee80211_sta_ps_transition(sta, ps); diff --git a/mt7603_main.c b/mt7603_main.c index d236918b..5af07e9e 100644 --- a/mt7603_main.c +++ b/mt7603_main.c @@ -328,6 +328,7 @@ mt7603_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps) struct mt7603_sta *msta = (struct mt7603_sta *) sta->drv_priv; int idx = msta->wcid.idx; + mt76_stop_tx_queues(&dev->mt76, sta, false); mt7603_wtbl_set_ps(dev, idx, ps); } diff --git a/mt76x2_main.c b/mt76x2_main.c index 205043b4..f492cca3 100644 --- a/mt76x2_main.c +++ b/mt76x2_main.c @@ -321,6 +321,7 @@ mt76x2_sta_ps(struct mt76_dev *mdev, struct ieee80211_sta *sta, bool ps) struct mt76x2_dev *dev = container_of(mdev, struct mt76x2_dev, mt76); int idx = msta->wcid.idx; + mt76_stop_tx_queues(&dev->mt76, sta, true); mt76x2_mac_wcid_set_drop(dev, idx, ps); }