* Re: [RFC] mac80211: Wait with enabling beacons on DFS channels
2011-01-11 14:40 ` [RFC] mac80211: Wait with enabling beacons on DFS channels Wojciech Dubowik
@ 2011-01-11 15:14 ` Bernhard Schmidt
0 siblings, 0 replies; 2+ messages in thread
From: Bernhard Schmidt @ 2011-01-11 15:14 UTC (permalink / raw)
To: Wojciech Dubowik; +Cc: linux-wireless, lrodriguez, nbd, Johannes Berg
On Tuesday, January 11, 2011 15:40:56 Wojciech Dubowik wrote:
> Hello,
> Basic DFS functionality requires that when we change to radar
> enabled channels we need to wait and listen before we can send
> beacons/frames -> Channel Availability Check (CAC).
> There is a case when we can switch to it immediately if we have
> been monitoring it off_channel for specific time. This is bit
> more complicated and doesn't need to be implemented in the first
> place because it's sort of functional optimization.
>
> Anyway there is a need for mechanism to control when to enable
> beacons if we switch to radar channel.
>
> Pseudo-code-diff bellow is an example for ath9k where we could enable
> beacons at once or fire a worker to re-enable it after CAC expires
> if radar hasn't been detected. In theory we need only to disable
> beacons because we shouldn't get any directed frames we could reply
> to and stations anyway can't probe directly. In practice to be
> sure it couldn't be probably done with making rx filters more
> restrictive during CAC period. Maybe there are other ways as well.
>
> --- a/drivers/net/wireless/ath/ath9k/main.c
> +++ b/drivers/net/wireless/ath/ath9k/main.c
> @@ -285,8 +285,14 @@
> ath9k_hw_set_interrupts(ah, ah->imask);
>
> if (!(sc->sc_flags & (SC_OP_OFFCHANNEL))) {
> - if (sc->sc_flags & SC_OP_BEACONS)
> - ath_beacon_config(sc, NULL);
> +
> + if (sc->sc_flags & SC_OP_BEACONS) {
> + if (channel->flags & IEEE80211_CHAN_RADAR
> + && !(channel->flags &
> IEEE80211_CHAN_NOL_FREE)) +
ieee80211_queue_delayed_work
> + (sc->hw, &sc->dfs_wait_cac_work, 0);
> + else
> + ath_beacon_config(sc, NULL);
> + }
> +
> ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work,
0);
> ath_start_ani(common);
> }
>
>
>
> Problem with this solution is that every driver would need to do
> their own timers and state machines to get this functionality which
> is shared by all.
> I don't know about other driver's structures but maybe a better way
> would be to implement mac80211 command to disable/enable beacons and
> set rx filters which every driver supporting DFS would have to implement.
> Mac80211 would have then timer which would control when to enable
> beacons. I guess Non Occupancy List (NOL) would be handled there as
> well so all the DFS timers could be in the same place.
>
> Any comments?
Afaik we did discuss this on IRC a few weeks ago and if I remember correctly
we decided to discard any configuration request before the CAC is over and the
channel is marked as 'clean'. As in, hostapd is modified such that it sends a
'do radar stuff now' command and only if the channel can be marked as clean
sending the actual configuration, in between those is the CAC period.
--
Best regards,
Dipl.-Inf. (FH) Bernhard Schmidt (software development)
saxnet GmbH, Willy-Brandt-Ring 1, 08606 Oelsnitz
Tel. +49 (0) 3741 300 6. 100 - Fax +49 (0) 3741 300 6. 101
managing director: Steffen Dreise - county court Chemnitz - HRB 23017
http://www.saxnet.de
^ permalink raw reply [flat|nested] 2+ messages in thread