Re: spamm of cfg80211: Calling CRDA to update world regulatory domain

From: Justin P. Mattock
Date: Fri Nov 25 2011 - 12:00:10 EST


On 11/25/2011 06:48 AM, Andreas Hartmann wrote:
Hi,

Justin P. Mattock schrieb:
is there a way to get rid of this annoying spamming of the regulatory?


[ 338.519037] cfg80211: Calling CRDA to update world regulatory domain
[ 338.523266] cfg80211: World regulatory domain updated:
[ 338.523269] cfg80211: (start_freq - end_freq @ bandwidth),
(max_antenna_gain, max_eirp)
[ 338.523272] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz),
(300 mBi, 2000 mBm)
[ 338.523276] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz),
(300 mBi, 2000 mBm)
[ 338.523279] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz),
(300 mBi, 2000 mBm)
[ 338.523281] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz),
(300 mBi, 2000 mBm)
[ 338.523284] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz),
(300 mBi, 2000 mBm)

I can see these messages with compat-wireless-2011-11-22, two. They are
sent out every 3 or 4 seconds. compat-wireless-2011-10-31 doesn't show
the problem.


Andreas



yep! usually if I go to starbucks to do things this message shows up(think most public areas I get this a lot).
if I connect to a home router this does not spamm the syslog that much(still does, just not as easily).
attached is dmesg of syslog at starbucks, within 10mins I already have like 3/4 of this..

http://fpaste.org/xzaz/

looking through the kernel I see mixed areas in of which this is triggered..:



net/wireless/reg.c:381

static int call_crda(const char *alpha2)
{
if (!is_world_regdom((char *) alpha2))
pr_info("Calling CRDA for country: %c%c\n",
alpha2[0], alpha2[1]);
else
pr_info("Calling CRDA to update world regulatory domain\n");

/* query internal regulatory database (if it exists) */
reg_regdb_query(alpha2);

return kobject_uevent(&reg_pdev->dev.kobj, KOBJ_CHANGE);
}


net/mac80211/work.c:498:

static enum work_action __must_check
ieee80211_authenticate(struct ieee80211_work *wk)
{

<----- lots of code --------->

printk(KERN_DEBUG "%s: authenticate with %pM (try %d)\n",
sdata->name, wk->filter_ta, wk->probe_auth.tries);


now not sure how this mechanism works, but there are _two_ approaches for the regulatory domain:

1) have the kernel use something like alpha2 that automatically finds/search _query's_ for the country or something.
or
2) manually add your country to net/wireless/db.txt with the country causing alpha1 to be used, which I think causes the kernel to not query for CRDA.

NOTE: I only spent a little time reading up on this, and trying it out so I might have got this wrong. all of this is on
http://linuxwireless.org/en/developers/Regulatory

Justin P. Mattock


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/