Search Linux Wireless

Re: [RFC] ath9k's regulatory domain code changes (for ar9170)

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

 



2009/3/28 Bob Copeland <me@xxxxxxxxxxxxxxx>:
> On Tue, Mar 24, 2009 at 03:04:59PM -0700, Luis R. Rodriguez wrote:
>> >> > Channel list is a good hint, maybe
>> >> > it's time to fix iw/nl80211 to send back all the channels :)
>> >
>> > I looked into yesterday actually, and it's completely non-trivial and
>> > requires userspace interface changes.
>>
>> Heh, there goes that idea then. Then in that case I'd advocate even
>> more trimming the channels down.
>
> Nick, what do you think of this?  I think it's the best compromise
> for now - people can still get all the channels, normal users get a
> nice speedup in the default case.
>
> --------------------
> From 7289f60a3acf3bb1cfcc2a7ef7c4d88ffd0e13f1 Mon Sep 17 00:00:00 2001
> From: Bob Copeland <me@xxxxxxxxxxxxxxx>
> Date: Sat, 28 Mar 2009 12:27:31 -0400
> Subject: [PATCH] ath5k: reduce exported channel list
>
> Claiming every available 5 ghz channel has a couple of negative
> side-effects: scanning takes a long time, and the channel list
> overflows the available buffer space for netlink commands,
> resulting in:
>
>    $ iw phy phy0 info
>    command failed: No buffer space available (-105)
>
> This patch adds a modparam so people who want to see all the channels
> can do so by passing all_channels=1.  By default users will see a
> smaller list of channels that works with iw.  This also halves scan
> time, from 10 seconds down to less than 5.
>
> Changes-licensed-under: 3-Clause-BSD
>
> Signed-off-by: Bob Copeland <me@xxxxxxxxxxxxxxx>
> ---
>  drivers/net/wireless/ath5k/base.c |   21 +++++++++++++++++++++
>  1 files changed, 21 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
> index 5d57d77..a018106 100644
> --- a/drivers/net/wireless/ath5k/base.c
> +++ b/drivers/net/wireless/ath5k/base.c
> @@ -64,6 +64,10 @@ static int modparam_nohwcrypt;
>  module_param_named(nohwcrypt, modparam_nohwcrypt, int, 0444);
>  MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption.");
>
> +static int modparam_all_channels;
> +module_param_named(all_channels, modparam_all_channels, int, 0444);
> +MODULE_PARM_DESC(all_channels, "Expose all channels the device can use.");
> +
>
>  /******************\
>  * Internal defines *
> @@ -862,6 +866,20 @@ ath5k_ieee2mhz(short chan)
>                return 2212 + chan * 20;
>  }
>
> +/*
> + * Returns true for the channel numbers user without all_channels modparam.
> + */
> +static bool ath5k_is_standard_channel(short chan)
> +{
> +       return ((chan <= 14) ||
> +               /* UNII 1,2 */
> +               ((chan & 3) == 0 && chan >= 36 && chan <= 64) ||
> +               /* midband */
> +               ((chan & 3) == 0 && chan >= 100 && chan <= 140) ||
> +               /* UNII-3 */
> +               ((chan & 3) == 1 && chan >= 149 && chan <= 165));
> +}
> +
>  static unsigned int
>  ath5k_copy_channels(struct ath5k_hw *ah,
>                struct ieee80211_channel *channels,
> @@ -899,6 +917,9 @@ ath5k_copy_channels(struct ath5k_hw *ah,
>                if (!ath5k_channel_ok(ah, freq, chfreq))
>                        continue;
>
> +               if (!modparam_all_channels && !ath5k_is_standard_channel(ch))
> +                       continue;
> +
>                /* Write channel info and increment counter */
>                channels[count].center_freq = freq;
>                channels[count].band = (chfreq == CHANNEL_2GHZ) ?

Seems fine ;-)

Acked-by: Nick Kossifidis <mickflemm@xxxxxxxxx>

-- 
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick
--
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