mt76: stop tx queues from the driver callback instead of common code
authorFelix Fietkau <nbd@nbd.name>
Tue, 3 Apr 2018 19:52:48 +0000 (21:52 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 24 Apr 2018 17:29:55 +0000 (20:29 +0300)
Allows the driver to control whether to send a BlockAckReq after waking
up. MT76x2 needs this set to true, for MT7603 (to be submitted later)
it needs to be false.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/mediatek/mt76/mac80211.c
drivers/net/wireless/mediatek/mt76/mt76x2_main.c

index 4f30cdc..962ed82 100644 (file)
@@ -541,12 +541,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);
-       }
 
        ieee80211_sta_ps_transition(sta, ps);
        dev->drv->sta_ps(dev, sta, ps);
index 73c127f..81c58f8 100644 (file)
@@ -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);
 }