Commit 96fb6f47 authored by Johannes Berg's avatar Johannes Berg
Browse files

wifi: iwlwifi: pull from TXQs with softirqs disabled



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>
parent c4fbf653
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -1740,8 +1740,11 @@ static void iwl_mvm_queue_state_change(struct iwl_op_mode *op_mode,
		else
			set_bit(IWL_MVM_TXQ_STATE_STOP_FULL, &mvmtxq->state);

		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);
			local_bh_enable();
		}
	}

out: