[PATCH v5 4/4] wifi: ath12k: implement custom wake_tx_queue with flow control

Jose Ignacio Tornos Martinez jtornosm at redhat.com
Wed Sep 16 23:40:23 PDT 2026


Hello Jeff,

Sorry for the late reply, I was on leave as noted in the v6 cover letter.

> I have a fixup for ath9k which does:
>       171 -  ratetbl = rcu_dereference(sta->rates);
>       171 +  ratetbl = rcu_dereference_bh(sta->rates);
>
> Should ath12k also use rcu_dereference_bh()?
I think the ath9k and ath12k situations are different. 

In ath9k, the rcu_dereference(sta->rates) is already inside the
spin_lock_bh(&sc->chan_lock) section, so BH is disabled and switching to
rcu_dereference_bh() directly satisfies lockdep without needing
rcu_read_lock().

In ath12k, narrowing the rcu_read_lock() scope would require changing the 4
existing rcu_dereference() calls inside ath12k_wifi7_mac_op_tx() to
rcu_dereference_bh(), since that function has an existing contract
(/* Note: called under rcu_read_lock() */) and is called from wake_tx_queue.
That is modifying working code beyond the scope of this series. Happy to do
it as a follow-up if you prefer.

Thanks

Best regards
José Ignacio




More information about the ath12k mailing list