From: Johannes Berg <johannes@sipsolutions.net>
To: Marco Porsch <marco.porsch@etit.tu-chemnitz.de>
Cc: javier@cozybit.com, linux-wireless@vger.kernel.org
Subject: Re: [RFC 14/14] mac80211: mesh PS individually-addressed frame release
Date: Wed, 28 Nov 2012 14:07:56 +0100 [thread overview]
Message-ID: <1354108076.9345.22.camel@jlt4.sipsolutions.net> (raw)
In-Reply-To: <50B3B4A2.5000908@etit.tu-chemnitz.de>
On Mon, 2012-11-26 at 10:27 -0800, Marco Porsch wrote:
> >> Imho, in the context of PSP trigger frames it does.
> >> Sending a trigger frame to a mesh PS STA with no EOSP implies the start
> >> of a PSP with the sender as owner -> following data. The other two
> >> combinations imply that there is no more data following in that direction.
> >
> > The EOSP bit in a trigger frame should always be 0 unless the frame is
> > also a PSP response, no?
>
> No. That is one weird thing about the standard: the combination
> RSPI:EOSP 0:0 is seen as a MPSP trigger frame when sent towards a
> station in PS mode towards the sender. So whenever a frame should be
> sent in a non-PSP context it has to set the EOSP flag.
> Another situation that sets the EOSP flag is a kind of MPSP poll: if one
> STA indicates buffered frames, the other STA can poll it with RSPI:EOSP 1:1.
What's RSPI?
> > What you seem to be missing though is the case when there _is_ more
> > data, but the service period has to end nonetheless, say because it was
> > limited to a few packets? Nothing here seems to indicate that an MPSP
> > ends only after all queued packets are transmitted, which would be a
> > requirement if this was supposed to be correct.
>
> MPSPs themselves are not defined in length by the standard.
> My current mechanism always sends all packets that are buffered at the
> start of the MPSP. At the time the MPSP starts, the last
> to-be-transmitted frame is the last buffered frame.
> Of course, by the time the MPSP ends, new frames may have been buffered
> in the meantime, which are not taken into account here. That would
> require additional feedback from ieee80211_tx_status which always seems
> a bit racy to me.
> (In an earlier version I had something like a feedback loop with
> ieee80211_tx_status, where the 'last' frame of a MPSP would always
> trigger a re-check of the PS buffers. That allowed to have infinite
> length MPSPs as long as data is enqueued for transmission. But that
> seemed to be overly complex when something like dynamic PS state
> switching is possible and advised by the standard.)
>
> But I see one situation where the More Data flag is indeed not set
> correctly. That is the case where I only send a single frame to a PS STA
> in a non-MPSP context when no peering is established yet. I'll fix that.
Hmm, ok. I don't really follow all of that, but hey :)
> > Well, not really, but non-QoS frames won't happen in that case, because
> > the peer will have QoS enabled. Similarly here I think, why would there
> > ever be a non-QoS frame? But maybe this can happen with forwarding,
> > which can't happen in the non-mesh case.
>
> For mesh also the HWMP routing (Management) frames are transmitted in
> MPSPs. So a valid PSP would look like that:
> 1) QoS Null (RSPI:EOSP 0:0)
> 2) Mgmt frame (e.g. HWMP Path Reply)
> 3) QoS Null (RSPI:EOSP 0:1)
> here the additional trailing Null is needed to end the MPSP. That
> scenario happens regularly when no path has been set up previously.
I assume the packet flow is
1 ->
<- 2
<- 3
correct? But in any case, I hadn't considered management frames.
Actually, those can be bufferable too without mesh, so that might be
buggy here right now, not sure they can be released with uAPSD.
> >> Absolutely correct. The PSP mechanism is just very similar to uAPSD,
> >> though. So once the PSP is set up, the mechanisms are the same actually.
> >> What do you advise? Renaming the release reason? Creating a different
> >> one that is handled equally?
> >
> > Well so far the more-data bit seems to be handled different, although I
> > argue above that you're actually not doing that correctly ;-)
> >
> > But I think doing different reasons could be helpful, if only to
> > understand the code better.
>
> In the last iteration of my RFC I created an own function similar to
> ieee80211_sta_ps_deliver_response. That spares adding even more
> complexity to ieee80211_sta_ps_deliver_response and allows me to keep
> the mesh PA code separated in mesh_ps.c. I don't seem to need the
> release reason then.
Ok. Not for the driver maybe, if that has to release buffered frames,
say with aggregation? But I don't know.
johannes
next prev parent reply other threads:[~2012-11-28 13:07 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-17 6:47 [RFC 00/14] mesh powersave - basics Marco Porsch
2012-11-17 6:47 ` [RFC 01/14] {nl,cfg,mac}80211: add beacon interval and DTIM period to mesh config Marco Porsch
2012-11-17 8:54 ` Johannes Berg
2012-11-17 6:47 ` [RFC 02/14] {cfg,nl}80211: mesh power mode config parameters Marco Porsch
2012-11-17 8:57 ` Johannes Berg
2012-11-17 6:47 ` [RFC 03/14] {cfg,nl}80211: set and get default mesh power mode Marco Porsch
2012-11-17 8:59 ` Johannes Berg
2012-11-17 23:38 ` Thomas Pedersen
2012-11-17 6:47 ` [RFC 04/14] mac80211: local link-specific mesh power mode logic Marco Porsch
2012-11-17 9:05 ` Johannes Berg
2012-11-17 6:47 ` [RFC 05/14] mac80211: mesh power mode indication in transmitted frames Marco Porsch
2012-11-17 9:10 ` Johannes Berg
2012-11-19 20:07 ` Marco Porsch
2012-11-19 20:32 ` Johannes Berg
2012-11-17 6:47 ` [RFC 06/14] mac80211: track neighbor STA power modes Marco Porsch
2012-11-17 9:14 ` Johannes Berg
2012-11-17 6:47 ` [RFC 07/14] {cfg,nl}80211: set local link-specific power mode Marco Porsch
2012-11-17 9:16 ` Johannes Berg
2012-11-17 6:48 ` [RFC 08/14] {cfg,nl}80211: get local and peer mesh power modes Marco Porsch
2012-11-17 6:48 ` [RFC 09/14] mac80211: add power save support structure to mesh interface Marco Porsch
2012-11-17 9:26 ` Johannes Berg
2012-11-20 23:53 ` Marco Porsch
2012-11-26 10:39 ` Johannes Berg
2012-11-17 6:48 ` [RFC 10/14] mac80211: enable frame buffering for PS STA Marco Porsch
2012-11-17 9:28 ` Johannes Berg
2012-11-17 6:48 ` [RFC 11/14] {cfg,nl}80211: add awake window to mesh config Marco Porsch
2012-11-17 9:29 ` Johannes Berg
2012-11-17 6:48 ` [RFC 12/14] mac80211: add awake window IE to mesh beacons Marco Porsch
2012-11-17 9:30 ` Johannes Berg
2012-11-17 6:48 ` [RFC 13/14] mac80211: add TIM " Marco Porsch
2012-11-17 9:33 ` Johannes Berg
2012-11-17 6:48 ` [RFC 14/14] mac80211: mesh PS individually-addressed frame release Marco Porsch
2012-11-17 9:40 ` Johannes Berg
2012-11-20 18:11 ` Marco Porsch
2012-11-26 10:45 ` Johannes Berg
2012-11-26 18:27 ` Marco Porsch
2012-11-28 13:07 ` Johannes Berg [this message]
2012-11-17 9:41 ` [RFC 00/14] mesh powersave - basics 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=1354108076.9345.22.camel@jlt4.sipsolutions.net \
--to=johannes@sipsolutions.net \
--cc=javier@cozybit.com \
--cc=linux-wireless@vger.kernel.org \
--cc=marco.porsch@etit.tu-chemnitz.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).