Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b49c15e1 authored by Felix Fietkau's avatar Felix Fietkau Committed by Johannes Berg
Browse files

mac80211: un-schedule TXQs on powersave start



Once a station enters powersave, its queues should not be returned by
ieee80211_next_txq() anymore. They will be re-scheduled again after the
station has woken up again

Fixes: 18667600 ("mac80211: Add TXQ scheduling API")
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
Acked-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 9a5a90d1
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -1568,7 +1568,15 @@ static void sta_ps_start(struct sta_info *sta)
		return;

	for (tid = 0; tid < IEEE80211_NUM_TIDS; tid++) {
		if (txq_has_queue(sta->sta.txq[tid]))
		struct ieee80211_txq *txq = sta->sta.txq[tid];
		struct txq_info *txqi = to_txq_info(txq);

		spin_lock(&local->active_txq_lock[txq->ac]);
		if (!list_empty(&txqi->schedule_order))
			list_del_init(&txqi->schedule_order);
		spin_unlock(&local->active_txq_lock[txq->ac]);

		if (txq_has_queue(txq))
			set_bit(tid, &sta->txq_buffered_tids);
		else
			clear_bit(tid, &sta->txq_buffered_tids);