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

Commit e4c33144 authored by Johannes Berg's avatar Johannes Berg Committed by Greg Kroah-Hartman
Browse files

wifi: iwlwifi: pull from TXQs with softirqs disabled



[ Upstream commit 96fb6f47db24a712d650b0a9b9074873f273fb0e ]

In mac80211, it's required that we pull from TXQs by calling
ieee80211_tx_dequeue() only with softirqs disabled. However,
in iwl_mvm_queue_state_change() we're often called with them
enabled, e.g. from flush if anything was flushed, triggering
a mac80211 warning.

Fix that by disabling the softirqs across the TX call.

Fixes: cfbc6c4c ("iwlwifi: mvm: support mac80211 TXQs model")
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarGregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230614123446.0feef7fa81db.I4dd62542d955b40dd8f0af34fa4accb9d0d17c7e@changeid


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent 2ba902da
Loading
Loading
Loading
Loading
+4 −1
Original line number Original line Diff line number Diff line
@@ -1167,8 +1167,11 @@ static void iwl_mvm_queue_state_change(struct iwl_op_mode *op_mode,
		mvmtxq = iwl_mvm_txq_from_mac80211(txq);
		mvmtxq = iwl_mvm_txq_from_mac80211(txq);
		mvmtxq->stopped = !start;
		mvmtxq->stopped = !start;


		if (start && mvmsta->sta_state != IEEE80211_STA_NOTEXIST)
		if (start && mvmsta->sta_state != IEEE80211_STA_NOTEXIST) {
			local_bh_disable();
			iwl_mvm_mac_itxq_xmit(mvm->hw, txq);
			iwl_mvm_mac_itxq_xmit(mvm->hw, txq);
			local_bh_enable();
		}
	}
	}


out:
out: