[PATCH 2/3] ath10k: add support for channels in licensed bands

Sebastian Gottschall s.gottschall at dd-wrt.com
Fri Mar 17 11:49:55 PDT 2017


you may quickly realize that this patch cannot be a solution
example:

-	if (channel >= 1 && channel <= 14) {
+	if (channel >= 1 && channel <= 7) {
  		status->band = NL80211_BAND_2GHZ;


do you you really want to limit the 2.4 channels for all users?


Am 16.03.2017 um 16:13 schrieb Simon Wunderlich:
> Many chips support channels in licensed bands. Add support for those,
> along with a corresponding kernel config option to disable them by
> default. Note that these channels are not selectable even if the
> option has been compiled unless the user modifies the regulatory
> database to explicitly enable the corresponding channels.
>
> NOTE:  These channels must not be used in most regulatory
> domains unless you have a license from the FCC or similar!
>
> Signed-off-by: Simon Wunderlich <sw at simonwunderlich.de>
> Signed-off-by: Mathias Kretschmer <mathias.kretschmer at fit.fraunhofer.de>
> ---
>   drivers/net/wireless/ath/ath10k/Kconfig | 20 ++++++++++++++++++++
>   drivers/net/wireless/ath/ath10k/core.h  |  4 ++++
>   drivers/net/wireless/ath/ath10k/mac.c   |  9 +++++++++
>   drivers/net/wireless/ath/ath10k/wmi.c   |  7 +++++--
>   4 files changed, 38 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath10k/Kconfig b/drivers/net/wireless/ath/ath10k/Kconfig
> index b4241cf9b7ed..13a23ed33f91 100644
> --- a/drivers/net/wireless/ath/ath10k/Kconfig
> +++ b/drivers/net/wireless/ath/ath10k/Kconfig
> @@ -53,3 +53,23 @@ config ATH10K_DFS_CERTIFIED
>   	---help---
>   	This option enables DFS support for initiating radiation on
>   	ath10k.
> +
> +config ATH10K_LICENSED_CHAN
> +	bool "Support channels in licensed bands"
> +	depends on ATH10K && CFG80211_CERTIFICATION_ONUS
> +	default n
> +	---help---
> +	  This option enables support for licensed channels on such as
> +          4.9 GHz (public safety).
> +
> +	  These are PUBLIC SAFETY CHANNELS and MUST NOT BE USED in most
> +	  regulatory domains UNLESS YOU HAVE A FULL LICENSE for their use from
> +	  your local radio regulator, e.g. the FCC or equivalent. Using these
> +	  channels without proper authorisation may result in serious legal
> +	  consequences.
> +
> +	  You will also have to build a regulatory database with these channels
> +	  enabled to actually use them.
> +
> +	  If you are a distro kernel builder or have any doubt whatsoever about
> +	  your legal ability to use these channels, say N.
> diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h
> index d4b9a0ec1bdc..7674641537b4 100644
> --- a/drivers/net/wireless/ath/ath10k/core.h
> +++ b/drivers/net/wireless/ath/ath10k/core.h
> @@ -46,7 +46,11 @@
>   #define WMI_READY_TIMEOUT (5 * HZ)
>   #define ATH10K_FLUSH_TIMEOUT_HZ (5 * HZ)
>   #define ATH10K_CONNECTION_LOSS_HZ (3 * HZ)
> +#ifdef CONFIG_ATH10K_LICENSED_CHAN
> +#define ATH10K_NUM_CHANS 47
> +#else
>   #define ATH10K_NUM_CHANS 40
> +#endif
>   
>   /* Antenna noise floor */
>   #define ATH10K_DEFAULT_NOISE_FLOOR -95
> diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
> index a25f0ec15cf8..23895af0fc63 100644
> --- a/drivers/net/wireless/ath/ath10k/mac.c
> +++ b/drivers/net/wireless/ath/ath10k/mac.c
> @@ -7669,6 +7669,15 @@ static const struct ieee80211_channel ath10k_5ghz_channels[] = {
>   	CHAN5G(161, 5805, 0),
>   	CHAN5G(165, 5825, 0),
>   	CHAN5G(169, 5845, 0),
> +#ifdef CONFIG_ATH10K_LICENSED_CHAN
> +	CHAN5G(184, 4920, 0),
> +	CHAN5G(188, 4940, 0),
> +	CHAN5G(192, 4960, 0),
> +	CHAN5G(196, 4980, 0),
> +	CHAN5G(8,   5040, 0),
> +	CHAN5G(12,  5060, 0),
> +	CHAN5G(16,  5080, 0),
> +#endif
>   };
>   
>   struct ath10k *ath10k_mac_create(size_t priv_size)
> diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c
> index 4e60caec7ab4..de7a4fa9d347 100644
> --- a/drivers/net/wireless/ath/ath10k/wmi.c
> +++ b/drivers/net/wireless/ath/ath10k/wmi.c
> @@ -2323,10 +2323,13 @@ int ath10k_wmi_event_mgmt_rx(struct ath10k *ar, struct sk_buff *skb)
>   	/* Hardware can Rx CCK rates on 5GHz. In that case phy_mode is set to
>   	 * MODE_11B. This means phy_mode is not a reliable source for the band
>   	 * of mgmt rx.
> +	 *
> +	 * On the other hand, channel 8, 12 and 16 are defined in 5GHz as well
> +	 * (5040 - 5080 MHz), therefore apply the override only for channels <=7
>   	 */
> -	if (channel >= 1 && channel <= 14) {
> +	if (channel >= 1 && channel <= 7) {
>   		status->band = NL80211_BAND_2GHZ;
> -	} else if (channel >= 36 && channel <= 169) {
> +	} else if (channel >= 8 && channel <= 196) {
>   		status->band = NL80211_BAND_5GHZ;
>   	} else {
>   		/* Shouldn't happen unless list of advertised channels to


-- 
Mit freundlichen Grüssen / Regards

Sebastian Gottschall / CTO

NewMedia-NET GmbH - DD-WRT
Firmensitz:  Berliner Ring 101, 64625 Bensheim
Registergericht: Amtsgericht Darmstadt, HRB 25473
Geschäftsführer: Peter Steinhäuser, Christian Scheele
http://www.dd-wrt.com
email: s.gottschall at dd-wrt.com
Tel.: +496251-582650 / Fax: +496251-5826565




More information about the ath10k mailing list