On 05.10.22 16:43, Toke Høiland-Jørgensen wrote:
Johannes Berg <johannes@xxxxxxxxxxxxxxxx> writes:
On Wed, 2022-10-05 at 14:26 +0200, Toke Høiland-Jørgensen wrote:
void ieee80211_handle_wake_tx_queue(struct ieee80211_hw *hw,
struct ieee80211_txq *txq)
{
... *local = from_hw(hw);
... *sdata = from_vif(txq->vif);
wake_tx_push_queue(local, sdata, txq);
}
Actually ... I wonder why you'd here - in waking a single TXQ - use
ieee80211_next_txq() at all, Toke, what do you think?
Well, this patch does almost exactly the same as the ath9k driver does,
ath9k was indeed the "template" I used. Mentioned that in the RFC but
dropped that in the final patch.
for instance. Really, the wake_tx_queue() is a signal to the driver to
start transmitting on the *hardware* queue that the txq points to. For
some drivers (like Intel, right?) that's a 1-to-1 mapping, for others
there are multiple TXQs being scheduled on the same HW-TXQ. So I think
it's probably the right thing to do to just call next_txq(); if there's
only a single TXQ scheduled it should be pretty cheap to do so.
Oh OK. So then the logic Alexander had makes sense.
Yup, I think so :)
As mentioned I initially just cloned the logic from ath9k but my
reasoning why it's done that way is a bit different: By calling
ieee80211_next_txq() we are making sure that we indeed are starting TX
on the highest prio iTXQ for that AC.
This logic has implications for putting "urgent" frames (like PS(?)) on
TXQs as well, of course, but that needs to be handled somehow anyway...
But that probably then anyway needs to be handled in next_txq()?
Yeah, just meant that comment as an "for future reference", it doesn't
impact this patch series (I think?)
So far my PS on iTXQ patch is just adding a fallback queue I'm using as
replacement for the push path. Idea then is, skip the iTXQs with PS
frames (vif.txq and all sta.txq[]) on the wake_tx_queue calls till they
are listening. When a driver wants to dequeue MPDUs early they still can
do that via the existing functions.
I have the skeleton for that and at least my notebook still has
connectivity with it there are multiple areas needing more work prior to
even think about testing it...
I'll keep you posted.
-Toke
Alexander