From: Felix Fietkau <nbd@openwrt.org>
To: Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de>
Cc: linux-wireless@vger.kernel.org,
Johannes Berg <johannes@sipsolutions.net>,
Mathias Kretschmer <mathias.kretschmer@fokus.fraunhofer.de>,
Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
Subject: Re: [PATCH 0/5] add master channel switch announcement support
Date: Mon, 10 Jun 2013 17:38:18 +0200 [thread overview]
Message-ID: <51B5F2EA.4040506@openwrt.org> (raw)
In-Reply-To: <20130610151154.GA1640@pandem0nium>
On 2013-06-10 5:11 PM, Simon Wunderlich wrote:
> Hey Felix,
>
> On Fri, Jun 07, 2013 at 07:33:16PM +0200, Felix Fietkau wrote:
>> On 2013-06-07 7:05 PM, Simon Wunderlich wrote:
>> > This is the follow up from the RFC posted a month ago. This patchset adds generic
>> > channel switch support for AP. This is required for DFS operation
>> > (e.g. Wi-Fi Alliance requires this for 802.11h certification). This will also
>> > be required for IBSS-DFS later.
>> >
>> > The rough design is:
>> > * userspace asks kernel to switch a channel using the new NL80211_CMD_CHANNEL_SWITCH
>> > command. It supplies IE information for the time while staying on the old channel and
>> > announcing the switch, and IE information for after the switch to the new channel.
>> > * IE information contains the beacon and optionally probe responses, which should
>> > include (E)CSA IEs for the CSA case. Furthermore an offset is provided (for beacon
>> > and probe response) to point to the counter field within the channel switch IEs.
>> > * The driver gets the new beacons passed and must set them, and decrement the
>> > counter field. When it reaches 0, the channel is changed and userspace notified.
>> >
>> > Discussion points:
>> > * Assembling all these IE information is a little bit tedious but doable (I've
>> > patched hostapd).
>> > * Other future users like IBSS/MESH will not get the beacon/probe response IEs, as they
>> > generate these beacons themselves. Therefore they need the COUNT attribute, which
>> > is kind of duplicate right now.
>> > * Userspace must generate/handle all IEs, which lifts the previous limitations of
>> > the RFC (e.g. no change of band allowed, no operation mode change allowed).
>> > * it currently works for me [TM] on my ath9k based machine
>> I think this is a bit racy. Just because the driver gets a beacon from
>> mac80211 doesn't mean that the beacon will be sent *immediately*. I'd
>> recommend calling back from the driver into mac80211 on beacon tx
>> completion. Also, it might make sense to skip CAB queue transmissions in
>> this case.
>
> mhm, you're right, changing channel might race with sending the beacon as it's
> set right now. I'd change it to:
>
> * update the counter within get_beacon() (as done now)
> * perform the channel switch after beacon transmission is completed (not sure how to get this
> event practically yet ... :] )
>
> What do you think?
>
> This must probably handle stuck/lost beacons too - is there any completion function
> called for stuck beacons?
Right now there are no mac80211 callbacks for either completed or missed
beacon tx. Inside ath9k, on AR93xx+, beacons get normal tx completion
events. For older chipsets the status descriptor must be checked
explicitly - see the implementation of drv_tx_last_beacon.
To get the timing right for checking tx completion of the beacon, you
can let the normal pre-AR93xx tx completion function check the beacon
queue if CSA was indicated via a flag or something.
As for stuck beacon, you can hook into the beacon tasklet function.
If the driver knows that a CSA is imminent, it can send the notification
on a stuck beacon event even before it hits the hw reset (which it only
does after several consecutive stuck beacon events).
- Felix
prev parent reply other threads:[~2013-06-10 15:38 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-07 17:05 [PATCH 0/5] add master channel switch announcement support Simon Wunderlich
2013-06-07 17:05 ` [PATCH 1/5] nl80211: use attributes to parse beacons Simon Wunderlich
2013-06-07 17:05 ` [PATCH 2/5] nl80211/cfg80211: add channel switch command Simon Wunderlich
2013-06-07 17:05 ` [PATCH 3/5] mac80211: add functions to duplicate a cfg80211_beacon Simon Wunderlich
2013-06-07 17:05 ` [PATCH 4/5] mac80211: add channel switch command and beacon callbacks Simon Wunderlich
2013-06-07 17:05 ` [PATCH 5/5] ath9k: enable CSA functionality in ath9k Simon Wunderlich
2013-06-07 17:33 ` [PATCH 0/5] add master channel switch announcement support Felix Fietkau
2013-06-10 15:11 ` Simon Wunderlich
2013-06-10 15:38 ` Felix Fietkau [this message]
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=51B5F2EA.4040506@openwrt.org \
--to=nbd@openwrt.org \
--cc=johannes@sipsolutions.net \
--cc=linux-wireless@vger.kernel.org \
--cc=mathias.kretschmer@fokus.fraunhofer.de \
--cc=simon.wunderlich@s2003.tu-chemnitz.de \
--cc=siwu@hrz.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).