Re: [PATCH v8 12/16] mesh: Allow DFS channels to be selected if dfs is enabled

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

 



On Mon, Aug 27, 2018 at 02:28:45PM -0700, peter.oh@xxxxxxxxxxxxxxxxx wrote:
> Note: DFS is assumed to be usable if a country code has been set

> diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
> @@ -2087,6 +2087,8 @@ void ibss_mesh_setup_freq(struct wpa_supplicant *wpa_s,
>  	int chwidth, seg0, seg1;
>  	u32 vht_caps = 0;
> +	int dfs_enabled = wpa_s->conf->country[0] &&
> +		(wpa_s->drv_flags & WPA_DRIVER_FLAGS_RADAR);

That looks strange.. Wouldn't that apply for non-DFS channels as well?

Please also clearly identify the potential impact this might have on
IBSS since this function is used for both mesh and IBSS. I would not
want accidentally enable something unexpected for IBSS as part of these
mesh related changes.

>  	/* Check primary channel flags */
> -	if (pri_chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
> +	if (pri_chan->flag & HOSTAPD_CHAN_DISABLED)
>  		return;
> +	if (pri_chan->flag & (HOSTAPD_CHAN_RADAR | HOSTAPD_CHAN_NO_IR))
> +		if (!dfs_enabled)
> +			return;

That looks like an overly complex way of doing:

	if ((pri->chan->flag & HOSTAPD_CHAN_DISABLED) ||
	    ((pri->chan->flags & HOSTAPD_CHAN_NO_IR) && !dfs_enabled))
		return;

dfs_enabled should really be accurate here, though, to avoid impact on
non-DFS channels.

>  	/* Check secondary channel flags */
> -	if (sec_chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
> +	if (sec_chan->flag & HOSTAPD_CHAN_DISABLED)
>  		return;
> +	if (sec_chan->flag & (HOSTAPD_CHAN_RADAR | HOSTAPD_CHAN_NO_IR))
> +		if (!dfs_enabled)
> +			return;

Same here.

>  		/* Back to HT configuration if channel not usable */
> -		if (chan->flag & (HOSTAPD_CHAN_DISABLED | HOSTAPD_CHAN_NO_IR))
> +		if (chan->flag & HOSTAPD_CHAN_DISABLED)
>  			return;
> +		if (chan->flag & (HOSTAPD_CHAN_RADAR | HOSTAPD_CHAN_NO_IR))
> +			if (!dfs_enabled)
> +				return;

And here.

> -				if (chan->flag & (HOSTAPD_CHAN_DISABLED |
> -						  HOSTAPD_CHAN_NO_IR |
> -						  HOSTAPD_CHAN_RADAR))
> +				if (chan->flag & HOSTAPD_CHAN_DISABLED)
>  					continue;
> +				if (chan->flag & (HOSTAPD_CHAN_RADAR | HOSTAPD_CHAN_NO_IR))
> +					if (!dfs_enabled)
> +						continue;

And with a small addition here as well.
 
-- 
Jouni Malinen                                            PGP id EFC895FA

_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap



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

  Powered by Linux