From: Johannes Berg <johannes@sipsolutions.net>
To: "Toke Høiland-Jørgensen" <toke@toke.dk>,
make-wifi-fast@lists.bufferbloat.net,
linux-wireless@vger.kernel.org
Subject: Re: [RFC 1/3] mac80211: Add TXQ scheduling API
Date: Tue, 10 Oct 2017 18:05:55 +0200 [thread overview]
Message-ID: <1507651555.26041.81.camel@sipsolutions.net> (raw)
In-Reply-To: <20171010140208.1515-1-toke@toke.dk> (sfid-20171010_160341_258014_BDC1BDA8)
> In particular, I'm not sure what the right thing to do in regards to
> PS wakeup is...
Can you explain what you were _trying_ to do?
I don't like calling this "driver_buffered" because that's already a
term for frames that are buffered in the driver ... :-)
PS is complicated, we basically transmit, in the following order:
* filtered frames (tx_filtered)
* buffered frames (ps_tx_buf)
* regular frames
This is when we _leave_ powersave. When we deliver frames while the
station is sleeping (PS-Poll or U-APSD), they don't even go through the
TXQ. They still come from this place, but currently go directly to the
->tx() method, which to me is actually pretty weird but that's what it
is now.
As I think I said in my other thread, we should probably eventually
just get rid of ps_tx_buf entirely, instead just keeping the frames on
the TXQ. Then, filtered can just be pushed onto txqi->frags [*], and we
get rid of having that separately as well.
Then, we've completely solved the wakeup scenario, we just start
scheduling that TXQ normally again.
For the deliver-while-sleeping (PS-Poll/U-APSD) scenario, I think the
driver should still pull frames, after calling something like
drv_release_buffered_frames(). We want this to be scheduled pretty much
immediately, so we shouldn't just put the TXQ into the normal rotation,
but otherwise it should work similarly - except limited to a certain
number of frames [**].
In this case the driver probably needs to pull the frames using a
different function so that we can
a) tag the packets properly (more-data, EOSP)
b) generate nulldata as EOSP container where needed
Thus, it seems likely that we'll want a separate function, "pull for PS
delivery" rather than the normal ieee80211_tx_dequeue().
johannes
[*] ok not exactly, if there are frags there already things get messy.
but we can probably solve that somehow without needing more special
cases
next prev parent reply other threads:[~2017-10-10 16:05 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-10 14:02 [RFC 1/3] mac80211: Add TXQ scheduling API Toke Høiland-Jørgensen
2017-10-10 14:02 ` [RFC 2/3] ath9k: Move to mac80211 " Toke Høiland-Jørgensen
2017-10-10 15:54 ` Johannes Berg
2017-10-10 14:02 ` [RFC 3/3] ath10k: " Toke Høiland-Jørgensen
2017-10-10 15:53 ` [RFC 1/3] mac80211: Add " Johannes Berg
2017-10-10 17:51 ` Toke Høiland-Jørgensen
2017-10-11 8:46 ` Johannes Berg
2017-10-11 13:54 ` Toke Høiland-Jørgensen
2017-10-10 16:05 ` Johannes Berg [this message]
2017-10-10 18:04 ` Toke Høiland-Jørgensen
2017-10-11 8:44 ` Johannes Berg
2017-10-11 14:06 ` Toke Høiland-Jørgensen
2017-10-11 14:15 ` Johannes Berg
2017-10-11 14:29 ` Toke Høiland-Jørgensen
2017-10-11 14:34 ` Johannes Berg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1507651555.26041.81.camel@sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=make-wifi-fast@lists.bufferbloat.net \
--cc=toke@toke.dk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.