[PATCH 1/2] wifi: ath11k: implement custom wake_tx_queue with flow control
Zhi-Jun You
hujy652 at gmail.com
Mon Jul 13 19:38:12 PDT 2026
On Mon, Jul 13, 2026 at 11:02 PM Jose Ignacio Tornos Martinez
<jtornosm at redhat.com> wrote:
>
> Hi Zhi-Jun,
>
> Thank you for the review.
>
> > In wake_tx_queue:
> > ring_id = txq->ac % ar->ab->hw_params.hal_params->num_tx_rings;
> >
> >In ath11k_dp_tx which is called by ath11k_mac_op_tx:
> >ring_selector = ab->hw_params.hw_ops->get_ring_selector(skb);
> > ti.ring_id = ring_selector % num_tx_rings;
> >
> > Are you sure ring_id will be the same?
> You're right — txq->ac % num_tx_rings doesn't match
> get_ring_selector(skb) % num_tx_rings on all platforms.
> In v1 the ring identification was only correct for platforms where the ring
> selector happens to coincide with the AC, but not for platforms.
>
> I will send a v2 trying to solve this globally for all the platforms.
>
> > Also mgmt frames use a different path.
> Correct — management frames go through WMI, not the TCL data rings, so they
> are not affected. The flow control applies to data frames, which are the
> ones causing the problem since they use different TCL rings depending on the
> platform's ring selector.
>
> Best regards,
> Jose Ignacio
>
Hi Jose,
While you are reworking it would you mind looking at the previous attempt?
It tried to follow the behaviour in ath10k but lacks throttling mechanism.
https://lore.kernel.org/linux-wireless/20230501130725.7171-1-quic_tamizhr@quicinc.com/
Best regards,
Zhi-Jun
More information about the ath11k
mailing list