<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/net/wireless, branch v3.14.13</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>brcmfmac: Fix brcmf_chip_ai_coredisable not applying reset bits to BCMA_IOCTL</title>
<updated>2014-07-09T18:18:28+00:00</updated>
<author>
<name>Hans de Goede</name>
<email>hdegoede@redhat.com</email>
</author>
<published>2014-04-23T10:20:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9210bad0ecb522c1b89dd496274637cb92e403d5'/>
<id>9210bad0ecb522c1b89dd496274637cb92e403d5</id>
<content type='text'>
commit ffa216bb5eecfce0f01b0b2a95d5c320dde90005 upstream.

brcmfmac has been broken on my cubietruck with a BCM43362:

brcmfmac: brcmf_chip_recognition: found AXI chip: BCM43362, rev=1
brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0:
        Apr 22 2013 14:50:00 version 5.90.195.89.6 FWID 01-b30a427d

since commit 53036261033: "brcmfmac: update core reset and disable routines".

The problem is that since this commit brcmf_chip_ai_resetcore no longer sets
BCMA_IOCTL itself before bringing the core out of reset, instead relying on
brcmf_chip_ai_coredisable to do so. But brcmf_chip_ai_coredisable is a nop
of the chip is already in reset. This patch modifies brcmf_chip_ai_coredisable
to always set BCMA_IOCTL even if the core is already in reset.

This fixes brcmfmac hanging in firmware loading on my board.

Cc: stable@vger.kernel.org # v3.14
Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Acked-by: Arend van Spriel &lt;arend@broadcom.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
[arend@broadcom.com: rebase patch on linux-3.14.y branch]
Signed-off-by: Arend van Spriel &lt;arend@broadcom.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 ffa216bb5eecfce0f01b0b2a95d5c320dde90005 upstream.

brcmfmac has been broken on my cubietruck with a BCM43362:

brcmfmac: brcmf_chip_recognition: found AXI chip: BCM43362, rev=1
brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0:
        Apr 22 2013 14:50:00 version 5.90.195.89.6 FWID 01-b30a427d

since commit 53036261033: "brcmfmac: update core reset and disable routines".

The problem is that since this commit brcmf_chip_ai_resetcore no longer sets
BCMA_IOCTL itself before bringing the core out of reset, instead relying on
brcmf_chip_ai_coredisable to do so. But brcmf_chip_ai_coredisable is a nop
of the chip is already in reset. This patch modifies brcmf_chip_ai_coredisable
to always set BCMA_IOCTL even if the core is already in reset.

This fixes brcmfmac hanging in firmware loading on my board.

Cc: stable@vger.kernel.org # v3.14
Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Acked-by: Arend van Spriel &lt;arend@broadcom.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
[arend@broadcom.com: rebase patch on linux-3.14.y branch]
Signed-off-by: Arend van Spriel &lt;arend@broadcom.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>b43: fix frequency reported on G-PHY with /new/ firmware</title>
<updated>2014-07-09T18:18:27+00:00</updated>
<author>
<name>Rafał Miłecki</name>
<email>zajec5@gmail.com</email>
</author>
<published>2014-06-12T20:28:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=ad8615594ecd776c9cc0291a6691d9375630cda1'/>
<id>ad8615594ecd776c9cc0291a6691d9375630cda1</id>
<content type='text'>
commit 2fc68eb122c7ea6cd5be1fe7d6650c0beb2f4f40 upstream.

Support for firmware rev 508+ was added years ago, but we never noticed
it reports channel in a different way for G-PHY devices. Instead of
offset from 2400 MHz it simply passes channel id (AKA hw_value).

So far it was (most probably) affecting monitor mode users only, but
the following recent commit made it noticeable for quite everybody:

commit 3afc2167f60a327a2c1e1e2600ef209a3c2b75b7
Author: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Date:   Tue Mar 4 16:50:13 2014 +0200

    cfg80211/mac80211: ignore signal if the frame was heard on wrong channel

Reported-by: Aaro Koskinen &lt;aaro.koskinen@iki.fi&gt;
Signed-off-by: Rafał Miłecki &lt;zajec5@gmail.com&gt;
Tested-by: Aaro Koskinen &lt;aaro.koskinen@iki.fi&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 2fc68eb122c7ea6cd5be1fe7d6650c0beb2f4f40 upstream.

Support for firmware rev 508+ was added years ago, but we never noticed
it reports channel in a different way for G-PHY devices. Instead of
offset from 2400 MHz it simply passes channel id (AKA hw_value).

So far it was (most probably) affecting monitor mode users only, but
the following recent commit made it noticeable for quite everybody:

commit 3afc2167f60a327a2c1e1e2600ef209a3c2b75b7
Author: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Date:   Tue Mar 4 16:50:13 2014 +0200

    cfg80211/mac80211: ignore signal if the frame was heard on wrong channel

Reported-by: Aaro Koskinen &lt;aaro.koskinen@iki.fi&gt;
Signed-off-by: Rafał Miłecki &lt;zajec5@gmail.com&gt;
Tested-by: Aaro Koskinen &lt;aaro.koskinen@iki.fi&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>iwlwifi: pcie: try to get ownership several times</title>
<updated>2014-07-09T18:18:26+00:00</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2014-05-08T09:15:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=bc3e3ff65a157cc6ef43e2279cfac6cf7cdcbbbe'/>
<id>bc3e3ff65a157cc6ef43e2279cfac6cf7cdcbbbe</id>
<content type='text'>
commit 501fd9895c1d7d8161ed56698ae2fccb10ef14f5 upstream.

Some races with the hardware can happen when we take
ownership of the device. Don't give up after the first try.

Reviewed-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@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 501fd9895c1d7d8161ed56698ae2fccb10ef14f5 upstream.

Some races with the hardware can happen when we take
ownership of the device. Don't give up after the first try.

Reviewed-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: fix rfkill regression on rt2500pci</title>
<updated>2014-07-09T18:18:24+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>stf_xl@wp.pl</email>
</author>
<published>2014-06-16T16:45:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=cbb5c309f56157e7010c40915b294151e83bd118'/>
<id>cbb5c309f56157e7010c40915b294151e83bd118</id>
<content type='text'>
commit 616a8394b5df8c88f4dd416f4527439a4e365034 upstream.

As reported by Niels, starting rfkill polling during device probe
(commit e2bc7c5, generally sane change) broke rfkill on rt2500pci
device. I considered that bug as some initalization issue, which
should be fixed on rt2500pci specific code. But after several
attempts (see bug report for details) we fail to find working solution.
Hence I decided to revert to old behaviour on rt2500pci to fix
regression.

Additionally patch also unregister rfkill on device remove instead
of ifconfig down, what was another issue introduced by bad commit.

Bug report:
https://bugzilla.kernel.org/show_bug.cgi?id=73821

Fixes: e2bc7c5f3cb8 ("rt2x00: Fix rfkill_polling register function.")
Bisected-by: Niels &lt;nille0386@googlemail.com&gt;
Reported-and-tested-by: Niels &lt;nille0386@googlemail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;stf_xl@wp.pl&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 616a8394b5df8c88f4dd416f4527439a4e365034 upstream.

As reported by Niels, starting rfkill polling during device probe
(commit e2bc7c5, generally sane change) broke rfkill on rt2500pci
device. I considered that bug as some initalization issue, which
should be fixed on rt2500pci specific code. But after several
attempts (see bug report for details) we fail to find working solution.
Hence I decided to revert to old behaviour on rt2500pci to fix
regression.

Additionally patch also unregister rfkill on device remove instead
of ifconfig down, what was another issue introduced by bad commit.

Bug report:
https://bugzilla.kernel.org/show_bug.cgi?id=73821

Fixes: e2bc7c5f3cb8 ("rt2x00: Fix rfkill_polling register function.")
Bisected-by: Niels &lt;nille0386@googlemail.com&gt;
Reported-and-tested-by: Niels &lt;nille0386@googlemail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;stf_xl@wp.pl&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>rt2x00: disable TKIP on USB</title>
<updated>2014-07-09T18:18:24+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2014-06-10T10:51:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=793985a2390311c7a321254c220a25a9e57aa610'/>
<id>793985a2390311c7a321254c220a25a9e57aa610</id>
<content type='text'>
commit 8edcb0ba0d56f5914eef11eda6db8bfe74eb9ca8 upstream.

On USB we can not get atomically TKIP key. We have to disable support
for TKIP acceleration on USB hardware to avoid bug as showed bellow.

[  860.827243] BUG: scheduling while atomic: hostapd/3397/0x00000002
&lt;snip&gt;
[  860.827280] Call Trace:
[  860.827282]  [&lt;ffffffff81682ea6&gt;] dump_stack+0x4d/0x66
[  860.827284]  [&lt;ffffffff8167eb9b&gt;] __schedule_bug+0x47/0x55
[  860.827285]  [&lt;ffffffff81685bb3&gt;] __schedule+0x733/0x7b0
[  860.827287]  [&lt;ffffffff81685c59&gt;] schedule+0x29/0x70
[  860.827289]  [&lt;ffffffff81684f8a&gt;] schedule_timeout+0x15a/0x2b0
[  860.827291]  [&lt;ffffffff8105ac50&gt;] ? ftrace_raw_event_tick_stop+0xc0/0xc0
[  860.827294]  [&lt;ffffffff810c13c2&gt;] ? __module_text_address+0x12/0x70
[  860.827296]  [&lt;ffffffff81686823&gt;] wait_for_completion_timeout+0xb3/0x140
[  860.827298]  [&lt;ffffffff81080fc0&gt;] ? wake_up_state+0x20/0x20
[  860.827301]  [&lt;ffffffff814d5b3d&gt;] usb_start_wait_urb+0x7d/0x150
[  860.827303]  [&lt;ffffffff814d5cd5&gt;] usb_control_msg+0xc5/0x110
[  860.827305]  [&lt;ffffffffa02fb0c6&gt;] rt2x00usb_vendor_request+0xc6/0x160  [rt2x00usb]
[  860.827307]  [&lt;ffffffffa02fb215&gt;] rt2x00usb_vendor_req_buff_lock+0x75/0x150 [rt2x00usb]
[  860.827309]  [&lt;ffffffffa02fb393&gt;] rt2x00usb_vendor_request_buff+0xa3/0xe0 [rt2x00usb]
[  860.827311]  [&lt;ffffffffa023d1a3&gt;] rt2x00usb_register_multiread+0x33/0x40 [rt2800usb]
[  860.827314]  [&lt;ffffffffa05805f9&gt;] rt2800_get_tkip_seq+0x39/0x50  [rt2800lib]
[  860.827321]  [&lt;ffffffffa0480f88&gt;] ieee80211_get_key+0x218/0x2a0  [mac80211]
[  860.827322]  [&lt;ffffffff815cc68c&gt;] ? __nlmsg_put+0x6c/0x80
[  860.827329]  [&lt;ffffffffa051b02e&gt;] nl80211_get_key+0x22e/0x360 [cfg80211]

Reported-and-tested-by: Peter Wu &lt;lekensteyn@gmail.com&gt;
Reported-and-tested-by: Pontus Fuchs &lt;pontus.fuchs@gmail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&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 8edcb0ba0d56f5914eef11eda6db8bfe74eb9ca8 upstream.

On USB we can not get atomically TKIP key. We have to disable support
for TKIP acceleration on USB hardware to avoid bug as showed bellow.

[  860.827243] BUG: scheduling while atomic: hostapd/3397/0x00000002
&lt;snip&gt;
[  860.827280] Call Trace:
[  860.827282]  [&lt;ffffffff81682ea6&gt;] dump_stack+0x4d/0x66
[  860.827284]  [&lt;ffffffff8167eb9b&gt;] __schedule_bug+0x47/0x55
[  860.827285]  [&lt;ffffffff81685bb3&gt;] __schedule+0x733/0x7b0
[  860.827287]  [&lt;ffffffff81685c59&gt;] schedule+0x29/0x70
[  860.827289]  [&lt;ffffffff81684f8a&gt;] schedule_timeout+0x15a/0x2b0
[  860.827291]  [&lt;ffffffff8105ac50&gt;] ? ftrace_raw_event_tick_stop+0xc0/0xc0
[  860.827294]  [&lt;ffffffff810c13c2&gt;] ? __module_text_address+0x12/0x70
[  860.827296]  [&lt;ffffffff81686823&gt;] wait_for_completion_timeout+0xb3/0x140
[  860.827298]  [&lt;ffffffff81080fc0&gt;] ? wake_up_state+0x20/0x20
[  860.827301]  [&lt;ffffffff814d5b3d&gt;] usb_start_wait_urb+0x7d/0x150
[  860.827303]  [&lt;ffffffff814d5cd5&gt;] usb_control_msg+0xc5/0x110
[  860.827305]  [&lt;ffffffffa02fb0c6&gt;] rt2x00usb_vendor_request+0xc6/0x160  [rt2x00usb]
[  860.827307]  [&lt;ffffffffa02fb215&gt;] rt2x00usb_vendor_req_buff_lock+0x75/0x150 [rt2x00usb]
[  860.827309]  [&lt;ffffffffa02fb393&gt;] rt2x00usb_vendor_request_buff+0xa3/0xe0 [rt2x00usb]
[  860.827311]  [&lt;ffffffffa023d1a3&gt;] rt2x00usb_register_multiread+0x33/0x40 [rt2800usb]
[  860.827314]  [&lt;ffffffffa05805f9&gt;] rt2800_get_tkip_seq+0x39/0x50  [rt2800lib]
[  860.827321]  [&lt;ffffffffa0480f88&gt;] ieee80211_get_key+0x218/0x2a0  [mac80211]
[  860.827322]  [&lt;ffffffff815cc68c&gt;] ? __nlmsg_put+0x6c/0x80
[  860.827329]  [&lt;ffffffffa051b02e&gt;] nl80211_get_key+0x22e/0x360 [cfg80211]

Reported-and-tested-by: Peter Wu &lt;lekensteyn@gmail.com&gt;
Reported-and-tested-by: Pontus Fuchs &lt;pontus.fuchs@gmail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&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>iwlwifi: mvm: rs: clear per rate stats when aggregation changes</title>
<updated>2014-06-07T17:28:28+00:00</updated>
<author>
<name>Eyal Shapira</name>
<email>eyal@wizery.com</email>
</author>
<published>2014-06-04T18:58:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=ca4a4d64a7b1c0d08067622c02ec6a276a4ebf7c'/>
<id>ca4a4d64a7b1c0d08067622c02ec6a276a4ebf7c</id>
<content type='text'>
commit b804eeb6649d75caeccbeae9f5623fc7b8bdfdfa upstream.

The per rate stats should be cleared when aggregation state changes
to avoid making rate scale decisions based on throughput figures which
were collected prior to the aggregation state change and are now stale.
While at it make sure any clearing of the per rate stats will get logged.

Signed-off-by: Eyal Shapira &lt;eyalx.shapira@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@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 b804eeb6649d75caeccbeae9f5623fc7b8bdfdfa upstream.

The per rate stats should be cleared when aggregation state changes
to avoid making rate scale decisions based on throughput figures which
were collected prior to the aggregation state change and are now stale.
While at it make sure any clearing of the per rate stats will get logged.

Signed-off-by: Eyal Shapira &lt;eyalx.shapira@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>iwlwifi: add rs_rate_scale_clear_tbl_windows helper function</title>
<updated>2014-06-07T17:28:28+00:00</updated>
<author>
<name>Eliad Peller</name>
<email>eliad@wizery.com</email>
</author>
<published>2014-06-04T18:58:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=424048eb3ff12c2b8da830cb8827d5bec136f515'/>
<id>424048eb3ff12c2b8da830cb8827d5bec136f515</id>
<content type='text'>
commit 3ca71f603bb1a0f55e1ba24618ba45617bc36f70 upstream.

instead of duplicating the same loop multiple times,
use a new function for it.

this will be later used also for clearing other
windows in the table.

Signed-off-by: Eliad Peller &lt;eliadx.peller@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@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 3ca71f603bb1a0f55e1ba24618ba45617bc36f70 upstream.

instead of duplicating the same loop multiple times,
use a new function for it.

this will be later used also for clearing other
windows in the table.

Signed-off-by: Eliad Peller &lt;eliadx.peller@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>iwlwifi: mvm: disable beacon filtering</title>
<updated>2014-06-07T17:28:28+00:00</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2014-05-18T16:05:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f47fc3c1b48dd8fc7a0a591551454459eca0ca94'/>
<id>f47fc3c1b48dd8fc7a0a591551454459eca0ca94</id>
<content type='text'>
commit 7bacc782270ff7db3b9f29fa5d24ad2ee1e8e81d upstream.

This feature has been causing trouble - disable it for now.

Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@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 7bacc782270ff7db3b9f29fa5d24ad2ee1e8e81d upstream.

This feature has been causing trouble - disable it for now.

Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>iwlwifi: mvm: BT Coex - fix Look Up Table</title>
<updated>2014-06-07T17:28:25+00:00</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2014-04-13T12:51:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b2fe79d69507a4f8140089c0458b1a31211ebf67'/>
<id>b2fe79d69507a4f8140089c0458b1a31211ebf67</id>
<content type='text'>
commit a6bc92803e7f765e02c923cf37c8e280e729642a upstream.

A few entries were wrong and this caused throughput issues.

Fixes: dac94da8dba3 ("iwlwifi: mvm: new BT Coex API")
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@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 a6bc92803e7f765e02c923cf37c8e280e729642a upstream.

A few entries were wrong and this caused throughput issues.

Fixes: dac94da8dba3 ("iwlwifi: mvm: new BT Coex API")
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>iwlwifi: mvm: fix setting channel in monitor mode</title>
<updated>2014-06-07T17:28:23+00:00</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2014-05-08T06:48:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b0e75f5df3df6a79218711775505ae4625255044'/>
<id>b0e75f5df3df6a79218711775505ae4625255044</id>
<content type='text'>
commit 1c4abec0baf25ffb92a28cc99d4231feeaa4d3f3 upstream.

There was a deadlock in monitor mode when we were setting the
channel if the channel was not 1.

======================================================
[ INFO: possible circular locking dependency detected ]
3.14.3 #4 Not tainted
-------------------------------------------------------
iw/3323 is trying to acquire lock:
 (&amp;local-&gt;chanctx_mtx){+.+.+.}, at: [&lt;ffffffffa062e2f2&gt;] ieee80211_vif_release_channel+0x42/0xb0 [mac80211]

but task is already holding lock:
 (&amp;local-&gt;iflist_mtx){+.+...}, at: [&lt;ffffffffa0609e0a&gt;] ieee80211_set_monitor_channel+0x5a/0x1b0 [mac80211]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 (&amp;local-&gt;iflist_mtx){+.+...}:
       [&lt;ffffffff810d95bb&gt;] __lock_acquire+0xb3b/0x13b0
       [&lt;ffffffff810d9ee0&gt;] lock_acquire+0xb0/0x1f0
       [&lt;ffffffff817eb9c8&gt;] mutex_lock_nested+0x78/0x4f0
       [&lt;ffffffffa06225cf&gt;] ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
       [&lt;ffffffffa0518189&gt;] iwl_mvm_recalc_multicast+0x49/0xa0 [iwlmvm]
       [&lt;ffffffffa051822e&gt;] iwl_mvm_configure_filter+0x4e/0x70 [iwlmvm]
       [&lt;ffffffffa05e6d43&gt;] ieee80211_configure_filter+0x153/0x5f0 [mac80211]
       [&lt;ffffffffa05e71f5&gt;] ieee80211_reconfig_filter+0x15/0x20 [mac80211]
       [snip]

-&gt; #1 (&amp;mvm-&gt;mutex){+.+.+.}:
       [&lt;ffffffff810d95bb&gt;] __lock_acquire+0xb3b/0x13b0
       [&lt;ffffffff810d9ee0&gt;] lock_acquire+0xb0/0x1f0
       [&lt;ffffffff817eb9c8&gt;] mutex_lock_nested+0x78/0x4f0
       [&lt;ffffffffa0517246&gt;] iwl_mvm_add_chanctx+0x56/0xe0 [iwlmvm]
       [&lt;ffffffffa062ca1e&gt;] ieee80211_new_chanctx+0x13e/0x410 [mac80211]
       [&lt;ffffffffa062d953&gt;] ieee80211_vif_use_channel+0x1c3/0x5a0 [mac80211]
       [&lt;ffffffffa06035ab&gt;] ieee80211_add_virtual_monitor+0x1ab/0x6b0 [mac80211]
       [&lt;ffffffffa06052ea&gt;] ieee80211_do_open+0xe6a/0x15a0 [mac80211]
       [&lt;ffffffffa0605a79&gt;] ieee80211_open+0x59/0x60 [mac80211]
       [snip]

-&gt; #0 (&amp;local-&gt;chanctx_mtx){+.+.+.}:
       [&lt;ffffffff810d6cb7&gt;] check_prevs_add+0x977/0x980
       [&lt;ffffffff810d95bb&gt;] __lock_acquire+0xb3b/0x13b0
       [&lt;ffffffff810d9ee0&gt;] lock_acquire+0xb0/0x1f0
       [&lt;ffffffff817eb9c8&gt;] mutex_lock_nested+0x78/0x4f0
       [&lt;ffffffffa062e2f2&gt;] ieee80211_vif_release_channel+0x42/0xb0 [mac80211]
       [&lt;ffffffffa0609ec3&gt;] ieee80211_set_monitor_channel+0x113/0x1b0 [mac80211]
       [&lt;ffffffffa058fb37&gt;] cfg80211_set_monitor_channel+0x77/0x2b0 [cfg80211]
       [&lt;ffffffffa056e0b2&gt;] __nl80211_set_channel+0x122/0x140 [cfg80211]
       [&lt;ffffffffa0581374&gt;] nl80211_set_wiphy+0x284/0xaf0 [cfg80211]
       [snip]

other info that might help us debug this:

Chain exists of:
  &amp;local-&gt;chanctx_mtx --&gt; &amp;mvm-&gt;mutex --&gt; &amp;local-&gt;iflist_mtx

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&amp;local-&gt;iflist_mtx);
                               lock(&amp;mvm-&gt;mutex);
                               lock(&amp;local-&gt;iflist_mtx);
  lock(&amp;local-&gt;chanctx_mtx);

 *** DEADLOCK ***

This deadlock actually occurs:
INFO: task iw:3323 blocked for more than 120 seconds.
      Not tainted 3.14.3 #4
"echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.
iw              D ffff8800c8afcd80  4192  3323   3322 0x00000000
 ffff880078fdb7e0 0000000000000046 ffff8800c8afcd80 ffff880078fdbfd8
 00000000001d5540 00000000001d5540 ffff8801141b0000 ffff8800c8afcd80
 ffff880078ff9e38 ffff880078ff9e38 ffff880078ff9e40 0000000000000246
Call Trace:
 [&lt;ffffffff817ea841&gt;] schedule_preempt_disabled+0x31/0x80
 [&lt;ffffffff817ebaed&gt;] mutex_lock_nested+0x19d/0x4f0
 [&lt;ffffffffa06225cf&gt;] ? ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
 [&lt;ffffffffa06225cf&gt;] ? ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
 [&lt;ffffffffa052a680&gt;] ? iwl_mvm_power_mac_update_mode+0xc0/0xc0 [iwlmvm]
 [&lt;ffffffffa06225cf&gt;] ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
 [&lt;ffffffffa0529357&gt;] _iwl_mvm_power_update_binding+0x27/0x80 [iwlmvm]
 [&lt;ffffffffa0516eb1&gt;] iwl_mvm_unassign_vif_chanctx+0x81/0xc0 [iwlmvm]
 [&lt;ffffffffa062d3ff&gt;] __ieee80211_vif_release_channel+0xdf/0x470 [mac80211]
 [&lt;ffffffffa062e2fa&gt;] ieee80211_vif_release_channel+0x4a/0xb0 [mac80211]
 [&lt;ffffffffa0609ec3&gt;] ieee80211_set_monitor_channel+0x113/0x1b0 [mac80211]
 [&lt;ffffffffa058fb37&gt;] cfg80211_set_monitor_channel+0x77/0x2b0 [cfg80211]
 [&lt;ffffffffa056e0b2&gt;] __nl80211_set_channel+0x122/0x140 [cfg80211]
 [&lt;ffffffffa0581374&gt;] nl80211_set_wiphy+0x284/0xaf0 [cfg80211]

This fixes https://bugzilla.kernel.org/show_bug.cgi?id=75541

Reviewed-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@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 1c4abec0baf25ffb92a28cc99d4231feeaa4d3f3 upstream.

There was a deadlock in monitor mode when we were setting the
channel if the channel was not 1.

======================================================
[ INFO: possible circular locking dependency detected ]
3.14.3 #4 Not tainted
-------------------------------------------------------
iw/3323 is trying to acquire lock:
 (&amp;local-&gt;chanctx_mtx){+.+.+.}, at: [&lt;ffffffffa062e2f2&gt;] ieee80211_vif_release_channel+0x42/0xb0 [mac80211]

but task is already holding lock:
 (&amp;local-&gt;iflist_mtx){+.+...}, at: [&lt;ffffffffa0609e0a&gt;] ieee80211_set_monitor_channel+0x5a/0x1b0 [mac80211]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-&gt; #2 (&amp;local-&gt;iflist_mtx){+.+...}:
       [&lt;ffffffff810d95bb&gt;] __lock_acquire+0xb3b/0x13b0
       [&lt;ffffffff810d9ee0&gt;] lock_acquire+0xb0/0x1f0
       [&lt;ffffffff817eb9c8&gt;] mutex_lock_nested+0x78/0x4f0
       [&lt;ffffffffa06225cf&gt;] ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
       [&lt;ffffffffa0518189&gt;] iwl_mvm_recalc_multicast+0x49/0xa0 [iwlmvm]
       [&lt;ffffffffa051822e&gt;] iwl_mvm_configure_filter+0x4e/0x70 [iwlmvm]
       [&lt;ffffffffa05e6d43&gt;] ieee80211_configure_filter+0x153/0x5f0 [mac80211]
       [&lt;ffffffffa05e71f5&gt;] ieee80211_reconfig_filter+0x15/0x20 [mac80211]
       [snip]

-&gt; #1 (&amp;mvm-&gt;mutex){+.+.+.}:
       [&lt;ffffffff810d95bb&gt;] __lock_acquire+0xb3b/0x13b0
       [&lt;ffffffff810d9ee0&gt;] lock_acquire+0xb0/0x1f0
       [&lt;ffffffff817eb9c8&gt;] mutex_lock_nested+0x78/0x4f0
       [&lt;ffffffffa0517246&gt;] iwl_mvm_add_chanctx+0x56/0xe0 [iwlmvm]
       [&lt;ffffffffa062ca1e&gt;] ieee80211_new_chanctx+0x13e/0x410 [mac80211]
       [&lt;ffffffffa062d953&gt;] ieee80211_vif_use_channel+0x1c3/0x5a0 [mac80211]
       [&lt;ffffffffa06035ab&gt;] ieee80211_add_virtual_monitor+0x1ab/0x6b0 [mac80211]
       [&lt;ffffffffa06052ea&gt;] ieee80211_do_open+0xe6a/0x15a0 [mac80211]
       [&lt;ffffffffa0605a79&gt;] ieee80211_open+0x59/0x60 [mac80211]
       [snip]

-&gt; #0 (&amp;local-&gt;chanctx_mtx){+.+.+.}:
       [&lt;ffffffff810d6cb7&gt;] check_prevs_add+0x977/0x980
       [&lt;ffffffff810d95bb&gt;] __lock_acquire+0xb3b/0x13b0
       [&lt;ffffffff810d9ee0&gt;] lock_acquire+0xb0/0x1f0
       [&lt;ffffffff817eb9c8&gt;] mutex_lock_nested+0x78/0x4f0
       [&lt;ffffffffa062e2f2&gt;] ieee80211_vif_release_channel+0x42/0xb0 [mac80211]
       [&lt;ffffffffa0609ec3&gt;] ieee80211_set_monitor_channel+0x113/0x1b0 [mac80211]
       [&lt;ffffffffa058fb37&gt;] cfg80211_set_monitor_channel+0x77/0x2b0 [cfg80211]
       [&lt;ffffffffa056e0b2&gt;] __nl80211_set_channel+0x122/0x140 [cfg80211]
       [&lt;ffffffffa0581374&gt;] nl80211_set_wiphy+0x284/0xaf0 [cfg80211]
       [snip]

other info that might help us debug this:

Chain exists of:
  &amp;local-&gt;chanctx_mtx --&gt; &amp;mvm-&gt;mutex --&gt; &amp;local-&gt;iflist_mtx

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&amp;local-&gt;iflist_mtx);
                               lock(&amp;mvm-&gt;mutex);
                               lock(&amp;local-&gt;iflist_mtx);
  lock(&amp;local-&gt;chanctx_mtx);

 *** DEADLOCK ***

This deadlock actually occurs:
INFO: task iw:3323 blocked for more than 120 seconds.
      Not tainted 3.14.3 #4
"echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.
iw              D ffff8800c8afcd80  4192  3323   3322 0x00000000
 ffff880078fdb7e0 0000000000000046 ffff8800c8afcd80 ffff880078fdbfd8
 00000000001d5540 00000000001d5540 ffff8801141b0000 ffff8800c8afcd80
 ffff880078ff9e38 ffff880078ff9e38 ffff880078ff9e40 0000000000000246
Call Trace:
 [&lt;ffffffff817ea841&gt;] schedule_preempt_disabled+0x31/0x80
 [&lt;ffffffff817ebaed&gt;] mutex_lock_nested+0x19d/0x4f0
 [&lt;ffffffffa06225cf&gt;] ? ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
 [&lt;ffffffffa06225cf&gt;] ? ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
 [&lt;ffffffffa052a680&gt;] ? iwl_mvm_power_mac_update_mode+0xc0/0xc0 [iwlmvm]
 [&lt;ffffffffa06225cf&gt;] ieee80211_iterate_active_interfaces+0x2f/0x60 [mac80211]
 [&lt;ffffffffa0529357&gt;] _iwl_mvm_power_update_binding+0x27/0x80 [iwlmvm]
 [&lt;ffffffffa0516eb1&gt;] iwl_mvm_unassign_vif_chanctx+0x81/0xc0 [iwlmvm]
 [&lt;ffffffffa062d3ff&gt;] __ieee80211_vif_release_channel+0xdf/0x470 [mac80211]
 [&lt;ffffffffa062e2fa&gt;] ieee80211_vif_release_channel+0x4a/0xb0 [mac80211]
 [&lt;ffffffffa0609ec3&gt;] ieee80211_set_monitor_channel+0x113/0x1b0 [mac80211]
 [&lt;ffffffffa058fb37&gt;] cfg80211_set_monitor_channel+0x77/0x2b0 [cfg80211]
 [&lt;ffffffffa056e0b2&gt;] __nl80211_set_channel+0x122/0x140 [cfg80211]
 [&lt;ffffffffa0581374&gt;] nl80211_set_wiphy+0x284/0xaf0 [cfg80211]

This fixes https://bugzilla.kernel.org/show_bug.cgi?id=75541

Reviewed-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
</feed>
