Possible CRDA wireless regressions

Luis R. Rodriguez mcgrof at gmail.com
Wed Mar 4 21:17:00 UTC 2009


On Wed, Mar 4, 2009 at 10:03 AM, Tim Gardner <tim.gardner at canonical.com> wrote:
> Luis,
>
> I'd like your opinion on a couple of bugs:
>
> https://bugs.launchpad.net/ubuntu/+bug/288401
>
> I think CRDA is working as designed, e.g., adapters sold in the US
> should not be able to use channel 13.

Right OLD_REG defaults to US which disallows channel 13. This is one
of the reasons why I hate OLD_REG. Anyway the correct fix is to
enhance world roaming. So for the in-kernel static world regulatory
domain I've sent patches to enable passive scanning on 5 GHz for
example. I will do the same now for channel 12-14 on the 2 GHz band.
That should get propagated down to stable and should help with these
situations if the OLD_REG is not used as the world regulatory domain
would be used then.

As noted in the bug report the solution to the issue with OLD_REG
(defaulting to US) on 2.6.28 is to change the ieee80211_regdom module
parameter to use their country. The "EU" is not a world but exists
only statically in the kernel when OLD_REG is enabled. Without OLD_REG
you also do not get the ieee80211_regdom module parameter because we
have a userspace interface now which allows you to change the
regulatory domain:

sudo iw reg set GB

For UK (the ISO / IEC alpha2 for the UK is GB after "Great Britain").

I realize this is a "regression" to a user as channel 13 used to work
for Intel cards. The reason for the issue is the OLD_REG which
disables channel 13. The solution to this regression is to claim to
cfg80211 that Intel is using a custom regulatory domain, which is
exactly what we have done in newer kernels. We extended the struct
wiphy and added to it the fw_handles_regulatory boolean in order to
inform cfg80211 to ignore the first regulatory hint, which would come
from the core for the alpha2 "US" with OLD_REG, and for the world
regulatory domain without OLD_REG. This boolean element has been now
renamed to custom_regulatory, as queued up for 2.6.30.

A fix here for this regression would be to request Greg to propagate
this patch to stable, which is already in Linus' tree:

14b9815af3f4fe0e171ee0c4325c31d2a2c1570b
Author: Luis R. Rodriguez <lrodriguez at atheros.com>
Date:   Wed Nov 12 14:22:03 2008 -0800

    cfg80211: add support for custom firmware regulatory solutions

    This adds API to cfg80211 to allow wireless drivers to inform
    us if their firmware can handle regulatory considerations *and*
    they cannot map these regulatory domains to an ISO / IEC 3166
    alpha2. In these cases we skip the first regulatory hint instead
    of expecting the driver to build their own regulatory structure,
    providing us with an alpha2, or using the reg_notifier().

    Signed-off-by: Luis R. Rodriguez <lrodriguez at atheros.com>
    Acked-by: Zhu Yi <yi.zhu at intel.com>
    Signed-off-by: John W. Linville <linville at tuxdriver.com>

I'll do so now.

So to summarize:

If OLD_REG is used but CRDA is present then use the ieee80211_regdom
module parameter with the country you belong in or simply use the
userspace:

sudo iw reg set UK

Additionally the fix above will be propagated to 2.6.28 stable series.

> https://bugs.launchpad.net/ubuntu/+bug/331092
>
> I'm not quite sure what is going on here.
>
> These guys are using 2.6.28 with
> CONFIG_WIRELESS_OLD_REGULATORY=n.

Is that their own custom kernel? Is What value is Ubuntu using for OLD_REG?

OK so the issue there is that if you disable OLD_REG you get the world
regulatory domain and that disables 5 GHz  by default. Again for Intel
this means a fix for the regression is the custom regulatory flag
which can be propagated to the stable series. Additionally the user
can set their regulatory domain to the country they belong as
indicated above. Note though that the ieee80211_regdom module
parameter is not present if OLD_REG is disabled.

I'll send a note to Greg to move the patch above to stable.

  Luis




More information about the kernel-team mailing list