<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/wireless/reg.c, branch v3.4.34</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>wireless: allow 40 MHz on world roaming channels 12/13</title>
<updated>2012-11-26T19:37:46+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2012-11-12T09:51:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=dd361b498741bd9b23a2f2238cf1c6af6cd49b67'/>
<id>dd361b498741bd9b23a2f2238cf1c6af6cd49b67</id>
<content type='text'>
commit 43c771a1963ab461a2f194e3c97fded1d5fe262f upstream.

When in world roaming mode, allow 40 MHz to be used
on channels 12 and 13 so that an AP that is, e.g.,
using HT40+ on channel 9 (in the UK) can be used.

Reported-by: Eddie Chapman &lt;eddie@ehuk.net&gt;
Tested-by: Eddie Chapman &lt;eddie@ehuk.net&gt;
Acked-by: Luis R. Rodriguez &lt;mcgrof@qca.qualcomm.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 43c771a1963ab461a2f194e3c97fded1d5fe262f upstream.

When in world roaming mode, allow 40 MHz to be used
on channels 12 and 13 so that an AP that is, e.g.,
using HT40+ on channel 9 (in the UK) can be used.

Reported-by: Eddie Chapman &lt;eddie@ehuk.net&gt;
Tested-by: Eddie Chapman &lt;eddie@ehuk.net&gt;
Acked-by: Luis R. Rodriguez &lt;mcgrof@qca.qualcomm.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: fix possible circular lock on reg_regdb_search()</title>
<updated>2012-10-02T17:30:09+00:00</updated>
<author>
<name>Luis R. Rodriguez</name>
<email>mcgrof@do-not-panic.com</email>
</author>
<published>2012-09-14T22:36:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=7334e402a35e0379933e8b0442f0baeed1104217'/>
<id>7334e402a35e0379933e8b0442f0baeed1104217</id>
<content type='text'>
commit a85d0d7f3460b1a123b78e7f7e39bf72c37dfb78 upstream.

When call_crda() is called we kick off a witch hunt search
for the same regulatory domain on our internal regulatory
database and that work gets kicked off on a workqueue, this
is done while the cfg80211_mutex is held. If that workqueue
kicks off it will first lock reg_regdb_search_mutex and
later cfg80211_mutex but to ensure two CPUs will not contend
against cfg80211_mutex the right thing to do is to have the
reg_regdb_search() wait until the cfg80211_mutex is let go.

The lockdep report is pasted below.

cfg80211: Calling CRDA to update world regulatory domain

======================================================
[ INFO: possible circular locking dependency detected ]
3.3.8 #3 Tainted: G           O
-------------------------------------------------------
kworker/0:1/235 is trying to acquire lock:
 (cfg80211_mutex){+.+...}, at: [&lt;816468a4&gt;] set_regdom+0x78c/0x808 [cfg80211]

but task is already holding lock:
 (reg_regdb_search_mutex){+.+...}, at: [&lt;81646828&gt;] set_regdom+0x710/0x808 [cfg80211]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 (reg_regdb_search_mutex){+.+...}:
       [&lt;800a8384&gt;] lock_acquire+0x60/0x88
       [&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
       [&lt;81645778&gt;] is_world_regdom+0x9f8/0xc74 [cfg80211]

-&gt; #1 (reg_mutex#2){+.+...}:
       [&lt;800a8384&gt;] lock_acquire+0x60/0x88
       [&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
       [&lt;8164539c&gt;] is_world_regdom+0x61c/0xc74 [cfg80211]

-&gt; #0 (cfg80211_mutex){+.+...}:
       [&lt;800a77b8&gt;] __lock_acquire+0x10d4/0x17bc
       [&lt;800a8384&gt;] lock_acquire+0x60/0x88
       [&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
       [&lt;816468a4&gt;] set_regdom+0x78c/0x808 [cfg80211]

other info that might help us debug this:

Chain exists of:
  cfg80211_mutex --&gt; reg_mutex#2 --&gt; reg_regdb_search_mutex

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(reg_regdb_search_mutex);
                               lock(reg_mutex#2);
                               lock(reg_regdb_search_mutex);
  lock(cfg80211_mutex);

 *** DEADLOCK ***

3 locks held by kworker/0:1/235:
 #0:  (events){.+.+..}, at: [&lt;80089a00&gt;] process_one_work+0x230/0x460
 #1:  (reg_regdb_work){+.+...}, at: [&lt;80089a00&gt;] process_one_work+0x230/0x460
 #2:  (reg_regdb_search_mutex){+.+...}, at: [&lt;81646828&gt;] set_regdom+0x710/0x808 [cfg80211]

stack backtrace:
Call Trace:
[&lt;80290fd4&gt;] dump_stack+0x8/0x34
[&lt;80291bc4&gt;] print_circular_bug+0x2ac/0x2d8
[&lt;800a77b8&gt;] __lock_acquire+0x10d4/0x17bc
[&lt;800a8384&gt;] lock_acquire+0x60/0x88
[&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
[&lt;816468a4&gt;] set_regdom+0x78c/0x808 [cfg80211]

Reported-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Tested-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@do-not-panic.com&gt;
Reviewed-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit a85d0d7f3460b1a123b78e7f7e39bf72c37dfb78 upstream.

When call_crda() is called we kick off a witch hunt search
for the same regulatory domain on our internal regulatory
database and that work gets kicked off on a workqueue, this
is done while the cfg80211_mutex is held. If that workqueue
kicks off it will first lock reg_regdb_search_mutex and
later cfg80211_mutex but to ensure two CPUs will not contend
against cfg80211_mutex the right thing to do is to have the
reg_regdb_search() wait until the cfg80211_mutex is let go.

The lockdep report is pasted below.

cfg80211: Calling CRDA to update world regulatory domain

======================================================
[ INFO: possible circular locking dependency detected ]
3.3.8 #3 Tainted: G           O
-------------------------------------------------------
kworker/0:1/235 is trying to acquire lock:
 (cfg80211_mutex){+.+...}, at: [&lt;816468a4&gt;] set_regdom+0x78c/0x808 [cfg80211]

but task is already holding lock:
 (reg_regdb_search_mutex){+.+...}, at: [&lt;81646828&gt;] set_regdom+0x710/0x808 [cfg80211]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 (reg_regdb_search_mutex){+.+...}:
       [&lt;800a8384&gt;] lock_acquire+0x60/0x88
       [&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
       [&lt;81645778&gt;] is_world_regdom+0x9f8/0xc74 [cfg80211]

-&gt; #1 (reg_mutex#2){+.+...}:
       [&lt;800a8384&gt;] lock_acquire+0x60/0x88
       [&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
       [&lt;8164539c&gt;] is_world_regdom+0x61c/0xc74 [cfg80211]

-&gt; #0 (cfg80211_mutex){+.+...}:
       [&lt;800a77b8&gt;] __lock_acquire+0x10d4/0x17bc
       [&lt;800a8384&gt;] lock_acquire+0x60/0x88
       [&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
       [&lt;816468a4&gt;] set_regdom+0x78c/0x808 [cfg80211]

other info that might help us debug this:

Chain exists of:
  cfg80211_mutex --&gt; reg_mutex#2 --&gt; reg_regdb_search_mutex

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(reg_regdb_search_mutex);
                               lock(reg_mutex#2);
                               lock(reg_regdb_search_mutex);
  lock(cfg80211_mutex);

 *** DEADLOCK ***

3 locks held by kworker/0:1/235:
 #0:  (events){.+.+..}, at: [&lt;80089a00&gt;] process_one_work+0x230/0x460
 #1:  (reg_regdb_work){+.+...}, at: [&lt;80089a00&gt;] process_one_work+0x230/0x460
 #2:  (reg_regdb_search_mutex){+.+...}, at: [&lt;81646828&gt;] set_regdom+0x710/0x808 [cfg80211]

stack backtrace:
Call Trace:
[&lt;80290fd4&gt;] dump_stack+0x8/0x34
[&lt;80291bc4&gt;] print_circular_bug+0x2ac/0x2d8
[&lt;800a77b8&gt;] __lock_acquire+0x10d4/0x17bc
[&lt;800a8384&gt;] lock_acquire+0x60/0x88
[&lt;802950a8&gt;] mutex_lock_nested+0x54/0x31c
[&lt;816468a4&gt;] set_regdom+0x78c/0x808 [cfg80211]

Reported-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Tested-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@do-not-panic.com&gt;
Reviewed-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>wireless: reg: restore previous behaviour of chan-&gt;max_power calculations</title>
<updated>2012-08-15T15:10:10+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2012-07-24T06:35:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0295403cd835f7260c6d9262817138f9f1cd8e19'/>
<id>0295403cd835f7260c6d9262817138f9f1cd8e19</id>
<content type='text'>
commit 5e31fc0815a4e2c72b1b495fe7a0d8f9bfb9e4b4 upstream.

commit eccc068e8e84c8fe997115629925e0422a98e4de
Author: Hong Wu &lt;Hong.Wu@dspg.com&gt;
Date:   Wed Jan 11 20:33:39 2012 +0200

    wireless: Save original maximum regulatory transmission power for the calucation of the local maximum transmit pow

changed the way we calculate chan-&gt;max_power as min(chan-&gt;max_power,
chan-&gt;max_reg_power). That broke rt2x00 (and perhaps some other
drivers) that do not set chan-&gt;max_power. It is not so easy to fix this
problem correctly in rt2x00.

According to commit eccc068e8 changelog, change claim only to save
maximum regulatory power - changing setting of chan-&gt;max_power was side
effect. This patch restore previous calculations of chan-&gt;max_power and
do not touch chan-&gt;max_reg_power.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Luis R. Rodriguez &lt;mcgrof@qca.qualcomm.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 5e31fc0815a4e2c72b1b495fe7a0d8f9bfb9e4b4 upstream.

commit eccc068e8e84c8fe997115629925e0422a98e4de
Author: Hong Wu &lt;Hong.Wu@dspg.com&gt;
Date:   Wed Jan 11 20:33:39 2012 +0200

    wireless: Save original maximum regulatory transmission power for the calucation of the local maximum transmit pow

changed the way we calculate chan-&gt;max_power as min(chan-&gt;max_power,
chan-&gt;max_reg_power). That broke rt2x00 (and perhaps some other
drivers) that do not set chan-&gt;max_power. It is not so easy to fix this
problem correctly in rt2x00.

According to commit eccc068e8 changelog, change claim only to save
maximum regulatory power - changing setting of chan-&gt;max_power was side
effect. This patch restore previous calculations of chan-&gt;max_power and
do not touch chan-&gt;max_reg_power.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Acked-by: Luis R. Rodriguez &lt;mcgrof@qca.qualcomm.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: fix potential deadlock in regulatory</title>
<updated>2012-07-16T16:04:11+00:00</updated>
<author>
<name>Eliad Peller</name>
<email>eliad@wizery.com</email>
</author>
<published>2012-06-12T09:53:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0d84f6e5ba73f0b2ef3af8e5c1f96b8ab8ecff6f'/>
<id>0d84f6e5ba73f0b2ef3af8e5c1f96b8ab8ecff6f</id>
<content type='text'>
commit fe20b39ec32e975f1054c0b7866c873a954adf05 upstream.

reg_timeout_work() calls restore_regulatory_settings() which
takes cfg80211_mutex.

reg_set_request_processed() already holds cfg80211_mutex
before calling cancel_delayed_work_sync(reg_timeout),
so it might deadlock.

Call the async cancel_delayed_work instead, in order
to avoid the potential deadlock.

This is the relevant lockdep warning:

cfg80211: Calling CRDA for country: XX

======================================================
[ INFO: possible circular locking dependency detected ]
3.4.0-rc5-wl+ #26 Not tainted
-------------------------------------------------------
kworker/0:2/1391 is trying to acquire lock:
 (cfg80211_mutex){+.+.+.}, at: [&lt;bf28ae00&gt;] restore_regulatory_settings+0x34/0x418 [cfg80211]

but task is already holding lock:
 ((reg_timeout).work){+.+...}, at: [&lt;c0059e94&gt;] process_one_work+0x1f0/0x480

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 ((reg_timeout).work){+.+...}:
       [&lt;c008fd44&gt;] validate_chain+0xb94/0x10f0
       [&lt;c0090b68&gt;] __lock_acquire+0x8c8/0x9b0
       [&lt;c0090d40&gt;] lock_acquire+0xf0/0x114
       [&lt;c005b600&gt;] wait_on_work+0x4c/0x154
       [&lt;c005c000&gt;] __cancel_work_timer+0xd4/0x11c
       [&lt;c005c064&gt;] cancel_delayed_work_sync+0x1c/0x20
       [&lt;bf28b274&gt;] reg_set_request_processed+0x50/0x78 [cfg80211]
       [&lt;bf28bd84&gt;] set_regdom+0x550/0x600 [cfg80211]
       [&lt;bf294cd8&gt;] nl80211_set_reg+0x218/0x258 [cfg80211]
       [&lt;c03c7738&gt;] genl_rcv_msg+0x1a8/0x1e8
       [&lt;c03c6a00&gt;] netlink_rcv_skb+0x5c/0xc0
       [&lt;c03c7584&gt;] genl_rcv+0x28/0x34
       [&lt;c03c6720&gt;] netlink_unicast+0x15c/0x228
       [&lt;c03c6c7c&gt;] netlink_sendmsg+0x218/0x298
       [&lt;c03933c8&gt;] sock_sendmsg+0xa4/0xc0
       [&lt;c039406c&gt;] __sys_sendmsg+0x1e4/0x268
       [&lt;c0394228&gt;] sys_sendmsg+0x4c/0x70
       [&lt;c0013840&gt;] ret_fast_syscall+0x0/0x3c

-&gt; #1 (reg_mutex){+.+.+.}:
       [&lt;c008fd44&gt;] validate_chain+0xb94/0x10f0
       [&lt;c0090b68&gt;] __lock_acquire+0x8c8/0x9b0
       [&lt;c0090d40&gt;] lock_acquire+0xf0/0x114
       [&lt;c04734dc&gt;] mutex_lock_nested+0x48/0x320
       [&lt;bf28b2cc&gt;] reg_todo+0x30/0x538 [cfg80211]
       [&lt;c0059f44&gt;] process_one_work+0x2a0/0x480
       [&lt;c005a4b4&gt;] worker_thread+0x1bc/0x2bc
       [&lt;c0061148&gt;] kthread+0x98/0xa4
       [&lt;c0014af4&gt;] kernel_thread_exit+0x0/0x8

-&gt; #0 (cfg80211_mutex){+.+.+.}:
       [&lt;c008ed58&gt;] print_circular_bug+0x68/0x2cc
       [&lt;c008fb28&gt;] validate_chain+0x978/0x10f0
       [&lt;c0090b68&gt;] __lock_acquire+0x8c8/0x9b0
       [&lt;c0090d40&gt;] lock_acquire+0xf0/0x114
       [&lt;c04734dc&gt;] mutex_lock_nested+0x48/0x320
       [&lt;bf28ae00&gt;] restore_regulatory_settings+0x34/0x418 [cfg80211]
       [&lt;bf28b200&gt;] reg_timeout_work+0x1c/0x20 [cfg80211]
       [&lt;c0059f44&gt;] process_one_work+0x2a0/0x480
       [&lt;c005a4b4&gt;] worker_thread+0x1bc/0x2bc
       [&lt;c0061148&gt;] kthread+0x98/0xa4
       [&lt;c0014af4&gt;] kernel_thread_exit+0x0/0x8

other info that might help us debug this:

Chain exists of:
  cfg80211_mutex --&gt; reg_mutex --&gt; (reg_timeout).work

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock((reg_timeout).work);
                               lock(reg_mutex);
                               lock((reg_timeout).work);
  lock(cfg80211_mutex);

 *** DEADLOCK ***

2 locks held by kworker/0:2/1391:
 #0:  (events){.+.+.+}, at: [&lt;c0059e94&gt;] process_one_work+0x1f0/0x480
 #1:  ((reg_timeout).work){+.+...}, at: [&lt;c0059e94&gt;] process_one_work+0x1f0/0x480

stack backtrace:
[&lt;c001b928&gt;] (unwind_backtrace+0x0/0x12c) from [&lt;c0471d3c&gt;] (dump_stack+0x20/0x24)
[&lt;c0471d3c&gt;] (dump_stack+0x20/0x24) from [&lt;c008ef70&gt;] (print_circular_bug+0x280/0x2cc)
[&lt;c008ef70&gt;] (print_circular_bug+0x280/0x2cc) from [&lt;c008fb28&gt;] (validate_chain+0x978/0x10f0)
[&lt;c008fb28&gt;] (validate_chain+0x978/0x10f0) from [&lt;c0090b68&gt;] (__lock_acquire+0x8c8/0x9b0)
[&lt;c0090b68&gt;] (__lock_acquire+0x8c8/0x9b0) from [&lt;c0090d40&gt;] (lock_acquire+0xf0/0x114)
[&lt;c0090d40&gt;] (lock_acquire+0xf0/0x114) from [&lt;c04734dc&gt;] (mutex_lock_nested+0x48/0x320)
[&lt;c04734dc&gt;] (mutex_lock_nested+0x48/0x320) from [&lt;bf28ae00&gt;] (restore_regulatory_settings+0x34/0x418 [cfg80211])
[&lt;bf28ae00&gt;] (restore_regulatory_settings+0x34/0x418 [cfg80211]) from [&lt;bf28b200&gt;] (reg_timeout_work+0x1c/0x20 [cfg80211])
[&lt;bf28b200&gt;] (reg_timeout_work+0x1c/0x20 [cfg80211]) from [&lt;c0059f44&gt;] (process_one_work+0x2a0/0x480)
[&lt;c0059f44&gt;] (process_one_work+0x2a0/0x480) from [&lt;c005a4b4&gt;] (worker_thread+0x1bc/0x2bc)
[&lt;c005a4b4&gt;] (worker_thread+0x1bc/0x2bc) from [&lt;c0061148&gt;] (kthread+0x98/0xa4)
[&lt;c0061148&gt;] (kthread+0x98/0xa4) from [&lt;c0014af4&gt;] (kernel_thread_exit+0x0/0x8)
cfg80211: Calling CRDA to update world regulatory domain
cfg80211: World regulatory domain updated:
cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)

Signed-off-by: Eliad Peller &lt;eliad@wizery.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit fe20b39ec32e975f1054c0b7866c873a954adf05 upstream.

reg_timeout_work() calls restore_regulatory_settings() which
takes cfg80211_mutex.

reg_set_request_processed() already holds cfg80211_mutex
before calling cancel_delayed_work_sync(reg_timeout),
so it might deadlock.

Call the async cancel_delayed_work instead, in order
to avoid the potential deadlock.

This is the relevant lockdep warning:

cfg80211: Calling CRDA for country: XX

======================================================
[ INFO: possible circular locking dependency detected ]
3.4.0-rc5-wl+ #26 Not tainted
-------------------------------------------------------
kworker/0:2/1391 is trying to acquire lock:
 (cfg80211_mutex){+.+.+.}, at: [&lt;bf28ae00&gt;] restore_regulatory_settings+0x34/0x418 [cfg80211]

but task is already holding lock:
 ((reg_timeout).work){+.+...}, at: [&lt;c0059e94&gt;] process_one_work+0x1f0/0x480

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 ((reg_timeout).work){+.+...}:
       [&lt;c008fd44&gt;] validate_chain+0xb94/0x10f0
       [&lt;c0090b68&gt;] __lock_acquire+0x8c8/0x9b0
       [&lt;c0090d40&gt;] lock_acquire+0xf0/0x114
       [&lt;c005b600&gt;] wait_on_work+0x4c/0x154
       [&lt;c005c000&gt;] __cancel_work_timer+0xd4/0x11c
       [&lt;c005c064&gt;] cancel_delayed_work_sync+0x1c/0x20
       [&lt;bf28b274&gt;] reg_set_request_processed+0x50/0x78 [cfg80211]
       [&lt;bf28bd84&gt;] set_regdom+0x550/0x600 [cfg80211]
       [&lt;bf294cd8&gt;] nl80211_set_reg+0x218/0x258 [cfg80211]
       [&lt;c03c7738&gt;] genl_rcv_msg+0x1a8/0x1e8
       [&lt;c03c6a00&gt;] netlink_rcv_skb+0x5c/0xc0
       [&lt;c03c7584&gt;] genl_rcv+0x28/0x34
       [&lt;c03c6720&gt;] netlink_unicast+0x15c/0x228
       [&lt;c03c6c7c&gt;] netlink_sendmsg+0x218/0x298
       [&lt;c03933c8&gt;] sock_sendmsg+0xa4/0xc0
       [&lt;c039406c&gt;] __sys_sendmsg+0x1e4/0x268
       [&lt;c0394228&gt;] sys_sendmsg+0x4c/0x70
       [&lt;c0013840&gt;] ret_fast_syscall+0x0/0x3c

-&gt; #1 (reg_mutex){+.+.+.}:
       [&lt;c008fd44&gt;] validate_chain+0xb94/0x10f0
       [&lt;c0090b68&gt;] __lock_acquire+0x8c8/0x9b0
       [&lt;c0090d40&gt;] lock_acquire+0xf0/0x114
       [&lt;c04734dc&gt;] mutex_lock_nested+0x48/0x320
       [&lt;bf28b2cc&gt;] reg_todo+0x30/0x538 [cfg80211]
       [&lt;c0059f44&gt;] process_one_work+0x2a0/0x480
       [&lt;c005a4b4&gt;] worker_thread+0x1bc/0x2bc
       [&lt;c0061148&gt;] kthread+0x98/0xa4
       [&lt;c0014af4&gt;] kernel_thread_exit+0x0/0x8

-&gt; #0 (cfg80211_mutex){+.+.+.}:
       [&lt;c008ed58&gt;] print_circular_bug+0x68/0x2cc
       [&lt;c008fb28&gt;] validate_chain+0x978/0x10f0
       [&lt;c0090b68&gt;] __lock_acquire+0x8c8/0x9b0
       [&lt;c0090d40&gt;] lock_acquire+0xf0/0x114
       [&lt;c04734dc&gt;] mutex_lock_nested+0x48/0x320
       [&lt;bf28ae00&gt;] restore_regulatory_settings+0x34/0x418 [cfg80211]
       [&lt;bf28b200&gt;] reg_timeout_work+0x1c/0x20 [cfg80211]
       [&lt;c0059f44&gt;] process_one_work+0x2a0/0x480
       [&lt;c005a4b4&gt;] worker_thread+0x1bc/0x2bc
       [&lt;c0061148&gt;] kthread+0x98/0xa4
       [&lt;c0014af4&gt;] kernel_thread_exit+0x0/0x8

other info that might help us debug this:

Chain exists of:
  cfg80211_mutex --&gt; reg_mutex --&gt; (reg_timeout).work

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock((reg_timeout).work);
                               lock(reg_mutex);
                               lock((reg_timeout).work);
  lock(cfg80211_mutex);

 *** DEADLOCK ***

2 locks held by kworker/0:2/1391:
 #0:  (events){.+.+.+}, at: [&lt;c0059e94&gt;] process_one_work+0x1f0/0x480
 #1:  ((reg_timeout).work){+.+...}, at: [&lt;c0059e94&gt;] process_one_work+0x1f0/0x480

stack backtrace:
[&lt;c001b928&gt;] (unwind_backtrace+0x0/0x12c) from [&lt;c0471d3c&gt;] (dump_stack+0x20/0x24)
[&lt;c0471d3c&gt;] (dump_stack+0x20/0x24) from [&lt;c008ef70&gt;] (print_circular_bug+0x280/0x2cc)
[&lt;c008ef70&gt;] (print_circular_bug+0x280/0x2cc) from [&lt;c008fb28&gt;] (validate_chain+0x978/0x10f0)
[&lt;c008fb28&gt;] (validate_chain+0x978/0x10f0) from [&lt;c0090b68&gt;] (__lock_acquire+0x8c8/0x9b0)
[&lt;c0090b68&gt;] (__lock_acquire+0x8c8/0x9b0) from [&lt;c0090d40&gt;] (lock_acquire+0xf0/0x114)
[&lt;c0090d40&gt;] (lock_acquire+0xf0/0x114) from [&lt;c04734dc&gt;] (mutex_lock_nested+0x48/0x320)
[&lt;c04734dc&gt;] (mutex_lock_nested+0x48/0x320) from [&lt;bf28ae00&gt;] (restore_regulatory_settings+0x34/0x418 [cfg80211])
[&lt;bf28ae00&gt;] (restore_regulatory_settings+0x34/0x418 [cfg80211]) from [&lt;bf28b200&gt;] (reg_timeout_work+0x1c/0x20 [cfg80211])
[&lt;bf28b200&gt;] (reg_timeout_work+0x1c/0x20 [cfg80211]) from [&lt;c0059f44&gt;] (process_one_work+0x2a0/0x480)
[&lt;c0059f44&gt;] (process_one_work+0x2a0/0x480) from [&lt;c005a4b4&gt;] (worker_thread+0x1bc/0x2bc)
[&lt;c005a4b4&gt;] (worker_thread+0x1bc/0x2bc) from [&lt;c0061148&gt;] (kthread+0x98/0xa4)
[&lt;c0061148&gt;] (kthread+0x98/0xa4) from [&lt;c0014af4&gt;] (kernel_thread_exit+0x0/0x8)
cfg80211: Calling CRDA to update world regulatory domain
cfg80211: World regulatory domain updated:
cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)

Signed-off-by: Eliad Peller &lt;eliad@wizery.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: warn if db.txt is empty with CONFIG_CFG80211_INTERNAL_REGDB</title>
<updated>2012-06-01T07:18:14+00:00</updated>
<author>
<name>Luis R. Rodriguez</name>
<email>mcgrof@frijolero.org</email>
</author>
<published>2012-03-23T14:23:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4c68b0f805f759fa0c61b9bbfb2ca0324b00cbd3'/>
<id>4c68b0f805f759fa0c61b9bbfb2ca0324b00cbd3</id>
<content type='text'>
commit 80007efeff0568375b08faf93c7aad65602cb97e upstream.

It has happened twice now where elaborate troubleshooting has
undergone on systems where CONFIG_CFG80211_INTERNAL_REGDB [0]
has been set but yet net/wireless/db.txt was not updated.

Despite the documentation on this it seems system integrators could
use some more help with this, so throw out a kernel warning at boot time
when their database is empty.

This does mean that the error-prone system integrator won't likely
realize the issue until they boot the machine but -- it does not seem
to make sense to enable a build bug breaking random build testing.

[0] http://wireless.kernel.org/en/developers/Regulatory/CRDA#CONFIG_CFG80211_INTERNAL_REGDB

Cc: Stephen Rothwell &lt;sfr@canb.auug.org.au&gt;
Cc: Youngsin Lee &lt;youngsin@qualcomm.com&gt;
Cc: Raja Mani &lt;rmani@qca.qualcomm.com&gt;
Cc: Senthil Kumar Balasubramanian &lt;senthilb@qca.qualcomm.com&gt;
Cc: Vipin Mehta &lt;vipimeht@qca.qualcomm.com&gt;
Cc: yahuan@qca.qualcomm.com
Cc: jjan@qca.qualcomm.com
Cc: vthiagar@qca.qualcomm.com
Cc: henrykim@qualcomm.com
Cc: jouni@qca.qualcomm.com
Cc: athiruve@qca.qualcomm.com
Cc: cjkim@qualcomm.com
Cc: philipk@qca.qualcomm.com
Cc: sunnykim@qualcomm.com
Cc: sskwak@qualcomm.com
Cc: kkim@qualcomm.com
Cc: mattbyun@qualcomm.com
Cc: ryanlee@qualcomm.com
Cc: simbap@qualcomm.com
Cc: krislee@qualcomm.com
Cc: conner@qualcomm.com
Cc: hojinkim@qualcomm.com
Cc: honglee@qualcomm.com
Cc: johnwkim@qualcomm.com
Cc: jinyong@qca.qualcomm.com
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@frijolero.org&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 80007efeff0568375b08faf93c7aad65602cb97e upstream.

It has happened twice now where elaborate troubleshooting has
undergone on systems where CONFIG_CFG80211_INTERNAL_REGDB [0]
has been set but yet net/wireless/db.txt was not updated.

Despite the documentation on this it seems system integrators could
use some more help with this, so throw out a kernel warning at boot time
when their database is empty.

This does mean that the error-prone system integrator won't likely
realize the issue until they boot the machine but -- it does not seem
to make sense to enable a build bug breaking random build testing.

[0] http://wireless.kernel.org/en/developers/Regulatory/CRDA#CONFIG_CFG80211_INTERNAL_REGDB

Cc: Stephen Rothwell &lt;sfr@canb.auug.org.au&gt;
Cc: Youngsin Lee &lt;youngsin@qualcomm.com&gt;
Cc: Raja Mani &lt;rmani@qca.qualcomm.com&gt;
Cc: Senthil Kumar Balasubramanian &lt;senthilb@qca.qualcomm.com&gt;
Cc: Vipin Mehta &lt;vipimeht@qca.qualcomm.com&gt;
Cc: yahuan@qca.qualcomm.com
Cc: jjan@qca.qualcomm.com
Cc: vthiagar@qca.qualcomm.com
Cc: henrykim@qualcomm.com
Cc: jouni@qca.qualcomm.com
Cc: athiruve@qca.qualcomm.com
Cc: cjkim@qualcomm.com
Cc: philipk@qca.qualcomm.com
Cc: sunnykim@qualcomm.com
Cc: sskwak@qualcomm.com
Cc: kkim@qualcomm.com
Cc: mattbyun@qualcomm.com
Cc: ryanlee@qualcomm.com
Cc: simbap@qualcomm.com
Cc: krislee@qualcomm.com
Cc: conner@qualcomm.com
Cc: hojinkim@qualcomm.com
Cc: honglee@qualcomm.com
Cc: johnwkim@qualcomm.com
Cc: jinyong@qca.qualcomm.com
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@frijolero.org&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>wireless: Save original maximum regulatory transmission power for the calucation of the local maximum transmit power</title>
<updated>2012-01-24T19:16:54+00:00</updated>
<author>
<name>Hong Wu</name>
<email>Hong.Wu@dspg.com</email>
</author>
<published>2012-01-11T18:33:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=eccc068e8e84c8fe997115629925e0422a98e4de'/>
<id>eccc068e8e84c8fe997115629925e0422a98e4de</id>
<content type='text'>
The local maximum transmit power is the maximum power a wireless device
allowed to transmit. If Power Constraint is presented, the local maximum
power equals to the maximum allowed power defined in regulatory domain
minus power constraint.

The maximum transmit power is maximum power a wireless device capable of
transmitting, and should be used in Power Capability element (7.3.2.16
IEEE802.11 2007).

The transmit power from a wireless device should not greater than the
local maximum transmit power.

The maximum transmit power was not calculated correctly in the current
Linux wireless/mac80211 when Power Constraint is presented.

Signed-off-by: Hong Wu &lt;hong.wu@dspg.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The local maximum transmit power is the maximum power a wireless device
allowed to transmit. If Power Constraint is presented, the local maximum
power equals to the maximum allowed power defined in regulatory domain
minus power constraint.

The maximum transmit power is maximum power a wireless device capable of
transmitting, and should be used in Power Capability element (7.3.2.16
IEEE802.11 2007).

The transmit power from a wireless device should not greater than the
local maximum transmit power.

The maximum transmit power was not calculated correctly in the current
Linux wireless/mac80211 when Power Constraint is presented.

Signed-off-by: Hong Wu &lt;hong.wu@dspg.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: relicense reg.c reg.h and genregdb.awk to ISC</title>
<updated>2012-01-04T19:30:41+00:00</updated>
<author>
<name>Luis R. Rodriguez</name>
<email>mcgrof@qca.qualcomm.com</email>
</author>
<published>2011-12-20T20:23:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3b77d5ec0c86b8a9594217ff9024b00e4d1c5795'/>
<id>3b77d5ec0c86b8a9594217ff9024b00e4d1c5795</id>
<content type='text'>
Following the tradition we have had with ath5k, ath9k, CRDA,
wireless-regdb I'd like to license this code under the permissive ISC
license for the code sharing purposes with other OSes, it'd sure be nice
to help the landscape in this area. Although I am %82.89 owner of the
regulatory code I have asked every contributor to the regulatory code
and have receieved positive Acked-bys from everyone except two deceased
entities:

 o Frans Pop RIP 2010 [0]
	- Frans Pop &lt;elendil@planet.nl&gt;
	- Frans Pop &lt;fjp@debian.org&gt;
 o Nokia     RIP February, 11, 2011 [1], [2]
	- ext-yuri.ershov@nokia.com
	- kalle.valo@nokia.com

Frans Pop's contribution was a simple patch 55f98938, titled,
"wireless: remove trailing space in messages" which just add a \n
to some printk lines. I'm going to treat these additions as
uncopyrightable.

As for the contributions made by employees on behalf of Nokia
my contact point was Petri Karhula &lt;petri.karhula@nokia.com&gt; but
after one month he noted he had not been able to get traction from the
legal department on this request, as such it I proceeded by replacing
their contributions in previous patches.

The end goal is to help a clean rewrite that starts in userspace
that is shared under ISC license which currently is taking place with
the regulatory simulator [3].

[0] http://lists.debian.org/debian-devel/2011/12/msg00263.html
[1] http://press.nokia.com/2011/02/11/nokia-outlines-new-strategy-introduces-new-leadership-operational-structure/
[2] http://NokiaPlanB.com
[3] git://github.com/mcgrof/regsim.git

Acked-by: Thadeu Lima de Souza Cascardo &lt;cascardo@holoscopio.com&gt;
Acked-by: Dan Carpenter &lt;error27@gmail.com&gt;
Acked-by: Mihai Moldovan &lt;ionic@ionic.de&gt;
Acked-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Acked-by: Sven Neumann &lt;s.neumann@raumfeld.com&gt;
Acked-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Acked-by: Tomas Winkler &lt;tomas.winkler@intel.com&gt;
Acked-by: Tony Vroon &lt;tony@linx.net&gt;
Acked-by: Pavel Roskin &lt;proski@gnu.org&gt;
Acked-by: Bob Copeland &lt;me@bobcopeland.com&gt;
Acked-by: Lucas De Marchi &lt;lucas.demarchi@profusion.mobi&gt;
Acked-by: Pat Erley &lt;pat-lkml@erley.org&gt;
Acked-by: Tejun Heo &lt;tj@kernel.org&gt;
Acked-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Acked-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
Acked-by: Joe Perches &lt;joe@perches.com&gt;
Acked-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Acked-by: John Gordon &lt;john@devicescape.com&gt;
Acked-by: Simon Barber &lt;protocolmagic@gmail.com&gt;
Acked-by: Rajkumar Manoharan &lt;rmanohar@qca.qualcomm.com&gt;
Acked-by: Jiri Benc &lt;jbenc@upir.cz&gt;
Acked-by: Bruno Randolf &lt;br1@einfach.org&gt;
Acked-by: Scott James Remnant &lt;keybuk@google.com&gt;
Acked-by: Roel Kluin &lt;roel.kluin@gmail.com&gt;
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@qca.qualcomm.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Following the tradition we have had with ath5k, ath9k, CRDA,
wireless-regdb I'd like to license this code under the permissive ISC
license for the code sharing purposes with other OSes, it'd sure be nice
to help the landscape in this area. Although I am %82.89 owner of the
regulatory code I have asked every contributor to the regulatory code
and have receieved positive Acked-bys from everyone except two deceased
entities:

 o Frans Pop RIP 2010 [0]
	- Frans Pop &lt;elendil@planet.nl&gt;
	- Frans Pop &lt;fjp@debian.org&gt;
 o Nokia     RIP February, 11, 2011 [1], [2]
	- ext-yuri.ershov@nokia.com
	- kalle.valo@nokia.com

Frans Pop's contribution was a simple patch 55f98938, titled,
"wireless: remove trailing space in messages" which just add a \n
to some printk lines. I'm going to treat these additions as
uncopyrightable.

As for the contributions made by employees on behalf of Nokia
my contact point was Petri Karhula &lt;petri.karhula@nokia.com&gt; but
after one month he noted he had not been able to get traction from the
legal department on this request, as such it I proceeded by replacing
their contributions in previous patches.

The end goal is to help a clean rewrite that starts in userspace
that is shared under ISC license which currently is taking place with
the regulatory simulator [3].

[0] http://lists.debian.org/debian-devel/2011/12/msg00263.html
[1] http://press.nokia.com/2011/02/11/nokia-outlines-new-strategy-introduces-new-leadership-operational-structure/
[2] http://NokiaPlanB.com
[3] git://github.com/mcgrof/regsim.git

Acked-by: Thadeu Lima de Souza Cascardo &lt;cascardo@holoscopio.com&gt;
Acked-by: Dan Carpenter &lt;error27@gmail.com&gt;
Acked-by: Mihai Moldovan &lt;ionic@ionic.de&gt;
Acked-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Acked-by: Sven Neumann &lt;s.neumann@raumfeld.com&gt;
Acked-by: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Acked-by: Tomas Winkler &lt;tomas.winkler@intel.com&gt;
Acked-by: Tony Vroon &lt;tony@linx.net&gt;
Acked-by: Pavel Roskin &lt;proski@gnu.org&gt;
Acked-by: Bob Copeland &lt;me@bobcopeland.com&gt;
Acked-by: Lucas De Marchi &lt;lucas.demarchi@profusion.mobi&gt;
Acked-by: Pat Erley &lt;pat-lkml@erley.org&gt;
Acked-by: Tejun Heo &lt;tj@kernel.org&gt;
Acked-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Acked-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
Acked-by: Joe Perches &lt;joe@perches.com&gt;
Acked-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Acked-by: John Gordon &lt;john@devicescape.com&gt;
Acked-by: Simon Barber &lt;protocolmagic@gmail.com&gt;
Acked-by: Rajkumar Manoharan &lt;rmanohar@qca.qualcomm.com&gt;
Acked-by: Jiri Benc &lt;jbenc@upir.cz&gt;
Acked-by: Bruno Randolf &lt;br1@einfach.org&gt;
Acked-by: Scott James Remnant &lt;keybuk@google.com&gt;
Acked-by: Roel Kluin &lt;roel.kluin@gmail.com&gt;
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@qca.qualcomm.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: replace reg.c Nokia commit 269ac5</title>
<updated>2012-01-04T19:30:40+00:00</updated>
<author>
<name>Luis R. Rodriguez</name>
<email>mcgrof@qca.qualcomm.com</email>
</author>
<published>2011-12-20T20:23:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6653325a556ef5a838ed7d3a0a6552f0efc72739'/>
<id>6653325a556ef5a838ed7d3a0a6552f0efc72739</id>
<content type='text'>
Nokia hasn't gotten back to me in over 1 month for a relicense
change request. There are only a few changes that they contributed,
so just reverting their changes but replacing with another set.
This change replaces this commit:

commit 269ac5fd2d75b118d76a2291e28796527db2f3f8
Author: Kalle Valo &lt;kalle.valo@nokia.com&gt;
Date:   Tue Dec 1 10:47:15 2009 +0200

    cfg80211: indent regulatory messages with spaces

    The regulatory messages in syslog look weird:

    kernel: cfg80211: Regulatory domain: US
    kernel: ^I(start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
    kernel: ^I(2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm)
    kernel: ^I(5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
    kernel: ^I(5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
    kernel: ^I(5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
    kernel: ^I(5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
    kernel: ^I(5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm)

    Indent them with four spaces instead of the tab character to get prettier
    output.

    Signed-off-by: Kalle Valo &lt;kalle.valo@nokia.com&gt;
    Acked: Luis R. Rodriguez &lt;lrodriguez@atheros.com&gt;
    Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;

Cc: Petri Karhula &lt;petri.karhula@nokia.com&gt;
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@qca.qualcomm.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Nokia hasn't gotten back to me in over 1 month for a relicense
change request. There are only a few changes that they contributed,
so just reverting their changes but replacing with another set.
This change replaces this commit:

commit 269ac5fd2d75b118d76a2291e28796527db2f3f8
Author: Kalle Valo &lt;kalle.valo@nokia.com&gt;
Date:   Tue Dec 1 10:47:15 2009 +0200

    cfg80211: indent regulatory messages with spaces

    The regulatory messages in syslog look weird:

    kernel: cfg80211: Regulatory domain: US
    kernel: ^I(start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
    kernel: ^I(2402000 KHz - 2472000 KHz @ 40000 KHz), (600 mBi, 2700 mBm)
    kernel: ^I(5170000 KHz - 5190000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
    kernel: ^I(5190000 KHz - 5210000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
    kernel: ^I(5210000 KHz - 5230000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
    kernel: ^I(5230000 KHz - 5330000 KHz @ 40000 KHz), (600 mBi, 2300 mBm)
    kernel: ^I(5735000 KHz - 5835000 KHz @ 40000 KHz), (600 mBi, 3000 mBm)

    Indent them with four spaces instead of the tab character to get prettier
    output.

    Signed-off-by: Kalle Valo &lt;kalle.valo@nokia.com&gt;
    Acked: Luis R. Rodriguez &lt;lrodriguez@atheros.com&gt;
    Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;

Cc: Petri Karhula &lt;petri.karhula@nokia.com&gt;
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@qca.qualcomm.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>cfg80211: replace reg.c Nokia commit c4c32294</title>
<updated>2012-01-04T19:30:40+00:00</updated>
<author>
<name>Luis R. Rodriguez</name>
<email>mcgrof@qca.qualcomm.com</email>
</author>
<published>2011-12-20T20:23:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8848bef0382af53a7c9568bbc6757db97c53a0e3'/>
<id>8848bef0382af53a7c9568bbc6757db97c53a0e3</id>
<content type='text'>
Nokia hasn't gotten back to me in over 1 month for a relicense
change request. There are only a few changes that they contributed,
so just reverting their changes but replacing with another set.
This change replaces this commit:

commit c4c322941ce0d7e2b7b8794ad70683123d9cb26a
Author: Yuri Ershov &lt;ext-yuri.ershov@nokia.com&gt;
Date:   Tue Jun 29 15:08:08 2010 +0400

    cfg80211: Update of regulatory request initiator handling

    In some cases there could be possible dereferencing freed pointer. The
    update is intended to avoid this issue.

    Signed-off-by: Yuri Ershov &lt;ext-yuri.ershov@nokia.com&gt;
    Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;

Cc: Petri Karhula &lt;petri.karhula@nokia.com&gt;
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@qca.qualcomm.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Nokia hasn't gotten back to me in over 1 month for a relicense
change request. There are only a few changes that they contributed,
so just reverting their changes but replacing with another set.
This change replaces this commit:

commit c4c322941ce0d7e2b7b8794ad70683123d9cb26a
Author: Yuri Ershov &lt;ext-yuri.ershov@nokia.com&gt;
Date:   Tue Jun 29 15:08:08 2010 +0400

    cfg80211: Update of regulatory request initiator handling

    In some cases there could be possible dereferencing freed pointer. The
    update is intended to avoid this issue.

    Signed-off-by: Yuri Ershov &lt;ext-yuri.ershov@nokia.com&gt;
    Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;

Cc: Petri Karhula &lt;petri.karhula@nokia.com&gt;
Signed-off-by: Luis R. Rodriguez &lt;mcgrof@qca.qualcomm.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>wireless: Protect regdomain change by mutex</title>
<updated>2012-01-04T19:30:39+00:00</updated>
<author>
<name>Dmitry Shmidt</name>
<email>dimitrysh@google.com</email>
</author>
<published>2011-12-19T20:32:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cee0bec58a922976a5f4d70081a3b2fd73e108e9'/>
<id>cee0bec58a922976a5f4d70081a3b2fd73e108e9</id>
<content type='text'>
Signed-off-by: Dmitry Shmidt &lt;dimitrysh@google.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Dmitry Shmidt &lt;dimitrysh@google.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
