Search Linux Wireless

Re: [RFC] mac80211: Wait with enabling beacons on DFS channels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux