<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/net/wireless/rt2x00, branch linux-3.2.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>rt2x00usb: mark device removed when get ENOENT usb error</title>
<updated>2018-02-13T18:32:15+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2017-11-09T10:59:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=d649dac2baff246209ddcf55d51832b8b98e2cb3'/>
<id>d649dac2baff246209ddcf55d51832b8b98e2cb3</id>
<content type='text'>
commit bfa62a52cad93686bb8d8171ea5288813248a7c6 upstream.

ENOENT usb error mean "specified interface or endpoint does not exist or
is not enabled". Mark device not present when we encounter this error
similar like we do with ENODEV error.

Otherwise we can have infinite loop in rt2x00usb_work_rxdone(), because
we remove and put again RX entries to the queue infinitely.

We can have similar situation when submit urb will fail all the time
with other error, so we need consider to limit number of entries
processed by rxdone work. But for now, since the patch fixes
reproducible soft lockup issue on single processor systems
and taken ENOENT error meaning, let apply this fix.

Patch adds additional ENOENT check not only in rx kick routine, but
also on other places where we check for ENODEV error.

Reported-by: Richard Genoud &lt;richard.genoud@gmail.com&gt;
Debugged-by: Richard Genoud &lt;richard.genoud@gmail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Tested-by: Richard Genoud &lt;richard.genoud@gmail.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
[bwh: Backported to 3.2: adjust filename, context]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit bfa62a52cad93686bb8d8171ea5288813248a7c6 upstream.

ENOENT usb error mean "specified interface or endpoint does not exist or
is not enabled". Mark device not present when we encounter this error
similar like we do with ENODEV error.

Otherwise we can have infinite loop in rt2x00usb_work_rxdone(), because
we remove and put again RX entries to the queue infinitely.

We can have similar situation when submit urb will fail all the time
with other error, so we need consider to limit number of entries
processed by rxdone work. But for now, since the patch fixes
reproducible soft lockup issue on single processor systems
and taken ENOENT error meaning, let apply this fix.

Patch adds additional ENOENT check not only in rx kick routine, but
also on other places where we check for ENODEV error.

Reported-by: Richard Genoud &lt;richard.genoud@gmail.com&gt;
Debugged-by: Richard Genoud &lt;richard.genoud@gmail.com&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Tested-by: Richard Genoud &lt;richard.genoud@gmail.com&gt;
Signed-off-by: Kalle Valo &lt;kvalo@codeaurora.org&gt;
[bwh: Backported to 3.2: adjust filename, context]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: do not align payload on modern H/W</title>
<updated>2014-12-14T16:23:56+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2014-11-11T13:28:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f8ddde5a235cda17012fddd84c0d49d8d8325a16'/>
<id>f8ddde5a235cda17012fddd84c0d49d8d8325a16</id>
<content type='text'>
commit cfd9167af14eb4ec21517a32911d460083ee3d59 upstream.

RT2800 and newer hardware require padding between header and payload if
header length is not multiple of 4.

For historical reasons we also align payload to to 4 bytes boundary, but
such alignment is not needed on modern H/W.

Patch fixes skb_under_panic problems reported from time to time:

https://bugzilla.kernel.org/show_bug.cgi?id=84911
https://bugzilla.kernel.org/show_bug.cgi?id=72471
http://marc.info/?l=linux-wireless&amp;m=139108549530402&amp;w=2
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1087591

Panic happened because we eat 4 bytes of skb headroom on each
(re)transmission when sending frame without the payload and the header
length not being multiple of 4 (i.e. QoS header has 26 bytes). On such
case because paylad_aling=2 is bigger than header_align=0 we increase
header_align by 4 bytes. To prevent that we could change the check to:

	if (payload_length &amp;&amp; payload_align &gt; header_align)
		header_align += 4;

but not aligning payload at all is more effective and alignment is not
really needed by H/W (that has been tested on OpenWrt project for few
years now).

Reported-and-tested-by: Antti S. Lankila &lt;alankila@bel.fi&gt;
Debugged-by: Antti S. Lankila &lt;alankila@bel.fi&gt;
Reported-by: Henrik Asp &lt;solenskiner@gmail.com&gt;
Originally-From: Helmut Schaa &lt;helmut.schaa@googlemail.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: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit cfd9167af14eb4ec21517a32911d460083ee3d59 upstream.

RT2800 and newer hardware require padding between header and payload if
header length is not multiple of 4.

For historical reasons we also align payload to to 4 bytes boundary, but
such alignment is not needed on modern H/W.

Patch fixes skb_under_panic problems reported from time to time:

https://bugzilla.kernel.org/show_bug.cgi?id=84911
https://bugzilla.kernel.org/show_bug.cgi?id=72471
http://marc.info/?l=linux-wireless&amp;m=139108549530402&amp;w=2
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1087591

Panic happened because we eat 4 bytes of skb headroom on each
(re)transmission when sending frame without the payload and the header
length not being multiple of 4 (i.e. QoS header has 26 bytes). On such
case because paylad_aling=2 is bigger than header_align=0 we increase
header_align by 4 bytes. To prevent that we could change the check to:

	if (payload_length &amp;&amp; payload_align &gt; header_align)
		header_align += 4;

but not aligning payload at all is more effective and alignment is not
really needed by H/W (that has been tested on OpenWrt project for few
years now).

Reported-and-tested-by: Antti S. Lankila &lt;alankila@bel.fi&gt;
Debugged-by: Antti S. Lankila &lt;alankila@bel.fi&gt;
Reported-by: Henrik Asp &lt;solenskiner@gmail.com&gt;
Originally-From: Helmut Schaa &lt;helmut.schaa@googlemail.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: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>wireless: rt2x00: add new rt2800usb device</title>
<updated>2014-12-14T16:23:53+00:00</updated>
<author>
<name>Cyril Brulebois</name>
<email>kibi@debian.org</email>
</author>
<published>2014-10-28T15:42:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=5f2f96008c8b5f527c3133fa98d2bc67b0a2ff1c'/>
<id>5f2f96008c8b5f527c3133fa98d2bc67b0a2ff1c</id>
<content type='text'>
commit 664d6a792785cc677c2091038ce10322c8d04ae1 upstream.

0x1b75 0xa200 AirLive WN-200USB wireless 11b/g/n dongle

References: https://bugs.debian.org/766802
Reported-by: Martin Mokrejs &lt;mmokrejs@fold.natur.cuni.cz&gt;
Signed-off-by: Cyril Brulebois &lt;kibi@debian.org&gt;
Acked-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 664d6a792785cc677c2091038ce10322c8d04ae1 upstream.

0x1b75 0xa200 AirLive WN-200USB wireless 11b/g/n dongle

References: https://bugs.debian.org/766802
Reported-by: Martin Mokrejs &lt;mmokrejs@fold.natur.cuni.cz&gt;
Signed-off-by: Cyril Brulebois &lt;kibi@debian.org&gt;
Acked-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2800: correct BBP1_TX_POWER_CTRL mask</title>
<updated>2014-12-14T16:23:45+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2014-09-24T09:24:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7d78f4e68a36776d7a0319bb66e88aebf6c958b5'/>
<id>7d78f4e68a36776d7a0319bb66e88aebf6c958b5</id>
<content type='text'>
commit 01f7feeaf4528bec83798316b3c811701bac5d3e upstream.

Two bits control TX power on BBP_R1 register. Correct the mask,
otherwise we clear additional bit on BBP_R1 register, what can have
unknown, possible negative effect.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 01f7feeaf4528bec83798316b3c811701bac5d3e upstream.

Two bits control TX power on BBP_R1 register. Correct the mask,
otherwise we clear additional bit on BBP_R1 register, what can have
unknown, possible negative effect.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: disable TKIP on USB</title>
<updated>2014-07-11T12:33:52+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=46b9b0e6598839525343d98aae525bcbf294e7bd'/>
<id>46b9b0e6598839525343d98aae525bcbf294e7bd</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: Ben Hutchings &lt;ben@decadent.org.uk&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: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: fix beaconing on USB</title>
<updated>2014-06-09T12:29:01+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2014-04-17T09:08:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=908db6fb4818e6fb8ceff9c6e36d1a41f318512f'/>
<id>908db6fb4818e6fb8ceff9c6e36d1a41f318512f</id>
<content type='text'>
commit 8834d3608cc516f13e2e510f4057c263f3d2ce42 upstream.

When disable beaconing we clear register with beacon and newer set it
back, what make we stop send beacons infinitely.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 8834d3608cc516f13e2e510f4057c263f3d2ce42 upstream.

When disable beaconing we clear register with beacon and newer set it
back, what make we stop send beacons infinitely.

Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: check if device is still available on rt2x00mac_flush()</title>
<updated>2014-01-03T04:33:15+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>stf_xl@wp.pl</email>
</author>
<published>2013-10-15T12:31:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=3044670ab992479da23ed94234e0fe9d1cddb722'/>
<id>3044670ab992479da23ed94234e0fe9d1cddb722</id>
<content type='text'>
commit 5671ab05cf2a579218985ef56595387932d78ee4 upstream.

Fix random kernel panic with below messages when remove dongle.

[ 2212.355447] BUG: unable to handle kernel NULL pointer dereference at 0000000000000250
[ 2212.355527] IP: [&lt;ffffffffa02667f2&gt;] rt2x00usb_kick_tx_entry+0x12/0x160 [rt2x00usb]
[ 2212.355599] PGD 0
[ 2212.355626] Oops: 0000 [#1] SMP
[ 2212.355664] Modules linked in: rt2800usb rt2x00usb rt2800lib crc_ccitt rt2x00lib mac80211 cfg80211 tun arc4 fuse rfcomm bnep snd_hda_codec_realtek snd_hda_intel snd_hda_codec btusb uvcvideo bluetooth snd_hwdep x86_pkg_temp_thermal snd_seq coretemp aesni_intel aes_x86_64 snd_seq_device glue_helper snd_pcm ablk_helper videobuf2_vmalloc sdhci_pci videobuf2_memops videobuf2_core sdhci videodev mmc_core serio_raw snd_page_alloc microcode i2c_i801 snd_timer hid_multitouch thinkpad_acpi lpc_ich mfd_core snd tpm_tis wmi tpm tpm_bios soundcore acpi_cpufreq i915 i2c_algo_bit drm_kms_helper drm i2c_core video [last unloaded: cfg80211]
[ 2212.356224] CPU: 0 PID: 34 Comm: khubd Not tainted 3.12.0-rc3-wl+ #3
[ 2212.356268] Hardware name: LENOVO 3444CUU/3444CUU, BIOS G6ET93WW (2.53 ) 02/04/2013
[ 2212.356319] task: ffff880212f687c0 ti: ffff880212f66000 task.ti: ffff880212f66000
[ 2212.356392] RIP: 0010:[&lt;ffffffffa02667f2&gt;]  [&lt;ffffffffa02667f2&gt;] rt2x00usb_kick_tx_entry+0x12/0x160 [rt2x00usb]
[ 2212.356481] RSP: 0018:ffff880212f67750  EFLAGS: 00010202
[ 2212.356519] RAX: 000000000000000c RBX: 000000000000000c RCX: 0000000000000293
[ 2212.356568] RDX: ffff8801f4dc219a RSI: 0000000000000000 RDI: 0000000000000240
[ 2212.356617] RBP: ffff880212f67778 R08: ffffffffa02667e0 R09: 0000000000000002
[ 2212.356665] R10: 0001f95254ab4b40 R11: ffff880212f675be R12: ffff8801f4dc2150
[ 2212.356712] R13: 0000000000000000 R14: ffffffffa02667e0 R15: 000000000000000d
[ 2212.356761] FS:  0000000000000000(0000) GS:ffff88021e200000(0000) knlGS:0000000000000000
[ 2212.356813] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 2212.356852] CR2: 0000000000000250 CR3: 0000000001a0c000 CR4: 00000000001407f0
[ 2212.356899] Stack:
[ 2212.356917]  000000000000000c ffff8801f4dc2150 0000000000000000 ffffffffa02667e0
[ 2212.356980]  000000000000000d ffff880212f677b8 ffffffffa03a31ad ffff8801f4dc219a
[ 2212.357038]  ffff8801f4dc2150 0000000000000000 ffff8800b93217a0 ffff8801f49bc800
[ 2212.357099] Call Trace:
[ 2212.357122]  [&lt;ffffffffa02667e0&gt;] ? rt2x00usb_interrupt_txdone+0x90/0x90 [rt2x00usb]
[ 2212.357174]  [&lt;ffffffffa03a31ad&gt;] rt2x00queue_for_each_entry+0xed/0x170 [rt2x00lib]
[ 2212.357244]  [&lt;ffffffffa026701c&gt;] rt2x00usb_kick_queue+0x5c/0x60 [rt2x00usb]
[ 2212.357314]  [&lt;ffffffffa03a3682&gt;] rt2x00queue_flush_queue+0x62/0xa0 [rt2x00lib]
[ 2212.357386]  [&lt;ffffffffa03a2930&gt;] rt2x00mac_flush+0x30/0x70 [rt2x00lib]
[ 2212.357470]  [&lt;ffffffffa04edded&gt;] ieee80211_flush_queues+0xbd/0x140 [mac80211]
[ 2212.357555]  [&lt;ffffffffa0502e52&gt;] ieee80211_set_disassoc+0x2d2/0x3d0 [mac80211]
[ 2212.357645]  [&lt;ffffffffa0506da3&gt;] ieee80211_mgd_deauth+0x1d3/0x240 [mac80211]
[ 2212.357718]  [&lt;ffffffff8108b17c&gt;] ? try_to_wake_up+0xec/0x290
[ 2212.357788]  [&lt;ffffffffa04dbd18&gt;] ieee80211_deauth+0x18/0x20 [mac80211]
[ 2212.357872]  [&lt;ffffffffa0418ddc&gt;] cfg80211_mlme_deauth+0x9c/0x140 [cfg80211]
[ 2212.357913]  [&lt;ffffffffa041907c&gt;] cfg80211_mlme_down+0x5c/0x60 [cfg80211]
[ 2212.357962]  [&lt;ffffffffa041cd18&gt;] cfg80211_disconnect+0x188/0x1a0 [cfg80211]
[ 2212.358014]  [&lt;ffffffffa04013bc&gt;] ? __cfg80211_stop_sched_scan+0x1c/0x130 [cfg80211]
[ 2212.358067]  [&lt;ffffffffa03f8954&gt;] cfg80211_leave+0xc4/0xe0 [cfg80211]
[ 2212.358124]  [&lt;ffffffffa03f8d1b&gt;] cfg80211_netdev_notifier_call+0x3ab/0x5e0 [cfg80211]
[ 2212.358177]  [&lt;ffffffff815140f8&gt;] ? inetdev_event+0x38/0x510
[ 2212.358217]  [&lt;ffffffff81085a94&gt;] ? __wake_up+0x44/0x50
[ 2212.358254]  [&lt;ffffffff8155995c&gt;] notifier_call_chain+0x4c/0x70
[ 2212.358293]  [&lt;ffffffff81081156&gt;] raw_notifier_call_chain+0x16/0x20
[ 2212.358361]  [&lt;ffffffff814b6dd5&gt;] call_netdevice_notifiers_info+0x35/0x60
[ 2212.358429]  [&lt;ffffffff814b6ec9&gt;] __dev_close_many+0x49/0xd0
[ 2212.358487]  [&lt;ffffffff814b7028&gt;] dev_close_many+0x88/0x100
[ 2212.358546]  [&lt;ffffffff814b8150&gt;] rollback_registered_many+0xb0/0x220
[ 2212.358612]  [&lt;ffffffff814b8319&gt;] unregister_netdevice_many+0x19/0x60
[ 2212.358694]  [&lt;ffffffffa04d8eb2&gt;] ieee80211_remove_interfaces+0x112/0x190 [mac80211]
[ 2212.358791]  [&lt;ffffffffa04c585f&gt;] ieee80211_unregister_hw+0x4f/0x100 [mac80211]
[ 2212.361994]  [&lt;ffffffffa03a1221&gt;] rt2x00lib_remove_dev+0x161/0x1a0 [rt2x00lib]
[ 2212.365240]  [&lt;ffffffffa0266e2e&gt;] rt2x00usb_disconnect+0x2e/0x70 [rt2x00usb]
[ 2212.368470]  [&lt;ffffffff81419ce4&gt;] usb_unbind_interface+0x64/0x1c0
[ 2212.371734]  [&lt;ffffffff813b446f&gt;] __device_release_driver+0x7f/0xf0
[ 2212.374999]  [&lt;ffffffff813b4503&gt;] device_release_driver+0x23/0x30
[ 2212.378131]  [&lt;ffffffff813b3c98&gt;] bus_remove_device+0x108/0x180
[ 2212.381358]  [&lt;ffffffff813b0565&gt;] device_del+0x135/0x1d0
[ 2212.384454]  [&lt;ffffffff81417760&gt;] usb_disable_device+0xb0/0x270
[ 2212.387451]  [&lt;ffffffff8140d9cd&gt;] usb_disconnect+0xad/0x1d0
[ 2212.390294]  [&lt;ffffffff8140f6cd&gt;] hub_thread+0x63d/0x1660
[ 2212.393034]  [&lt;ffffffff8107c860&gt;] ? wake_up_atomic_t+0x30/0x30
[ 2212.395728]  [&lt;ffffffff8140f090&gt;] ? hub_port_debounce+0x130/0x130
[ 2212.398412]  [&lt;ffffffff8107baa0&gt;] kthread+0xc0/0xd0
[ 2212.401058]  [&lt;ffffffff8107b9e0&gt;] ? insert_kthread_work+0x40/0x40
[ 2212.403639]  [&lt;ffffffff8155de3c&gt;] ret_from_fork+0x7c/0xb0
[ 2212.406193]  [&lt;ffffffff8107b9e0&gt;] ? insert_kthread_work+0x40/0x40
[ 2212.408732] Code: 24 58 08 00 00 bf 80 00 00 00 e8 3a c3 e0 e0 5b 41 5c 5d c3 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41 57 41 56 41 55 41 54 53 &lt;48&gt; 8b 47 10 48 89 fb 4c 8b 6f 28 4c 8b 20 49 8b 04 24 4c 8b 30
[ 2212.414671] RIP  [&lt;ffffffffa02667f2&gt;] rt2x00usb_kick_tx_entry+0x12/0x160 [rt2x00usb]
[ 2212.417646]  RSP &lt;ffff880212f67750&gt;
[ 2212.420547] CR2: 0000000000000250
[ 2212.441024] ---[ end trace 5442918f33832bce ]---

Signed-off-by: Stanislaw Gruszka &lt;stf_xl@wp.pl&gt;
Acked-by: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 5671ab05cf2a579218985ef56595387932d78ee4 upstream.

Fix random kernel panic with below messages when remove dongle.

[ 2212.355447] BUG: unable to handle kernel NULL pointer dereference at 0000000000000250
[ 2212.355527] IP: [&lt;ffffffffa02667f2&gt;] rt2x00usb_kick_tx_entry+0x12/0x160 [rt2x00usb]
[ 2212.355599] PGD 0
[ 2212.355626] Oops: 0000 [#1] SMP
[ 2212.355664] Modules linked in: rt2800usb rt2x00usb rt2800lib crc_ccitt rt2x00lib mac80211 cfg80211 tun arc4 fuse rfcomm bnep snd_hda_codec_realtek snd_hda_intel snd_hda_codec btusb uvcvideo bluetooth snd_hwdep x86_pkg_temp_thermal snd_seq coretemp aesni_intel aes_x86_64 snd_seq_device glue_helper snd_pcm ablk_helper videobuf2_vmalloc sdhci_pci videobuf2_memops videobuf2_core sdhci videodev mmc_core serio_raw snd_page_alloc microcode i2c_i801 snd_timer hid_multitouch thinkpad_acpi lpc_ich mfd_core snd tpm_tis wmi tpm tpm_bios soundcore acpi_cpufreq i915 i2c_algo_bit drm_kms_helper drm i2c_core video [last unloaded: cfg80211]
[ 2212.356224] CPU: 0 PID: 34 Comm: khubd Not tainted 3.12.0-rc3-wl+ #3
[ 2212.356268] Hardware name: LENOVO 3444CUU/3444CUU, BIOS G6ET93WW (2.53 ) 02/04/2013
[ 2212.356319] task: ffff880212f687c0 ti: ffff880212f66000 task.ti: ffff880212f66000
[ 2212.356392] RIP: 0010:[&lt;ffffffffa02667f2&gt;]  [&lt;ffffffffa02667f2&gt;] rt2x00usb_kick_tx_entry+0x12/0x160 [rt2x00usb]
[ 2212.356481] RSP: 0018:ffff880212f67750  EFLAGS: 00010202
[ 2212.356519] RAX: 000000000000000c RBX: 000000000000000c RCX: 0000000000000293
[ 2212.356568] RDX: ffff8801f4dc219a RSI: 0000000000000000 RDI: 0000000000000240
[ 2212.356617] RBP: ffff880212f67778 R08: ffffffffa02667e0 R09: 0000000000000002
[ 2212.356665] R10: 0001f95254ab4b40 R11: ffff880212f675be R12: ffff8801f4dc2150
[ 2212.356712] R13: 0000000000000000 R14: ffffffffa02667e0 R15: 000000000000000d
[ 2212.356761] FS:  0000000000000000(0000) GS:ffff88021e200000(0000) knlGS:0000000000000000
[ 2212.356813] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 2212.356852] CR2: 0000000000000250 CR3: 0000000001a0c000 CR4: 00000000001407f0
[ 2212.356899] Stack:
[ 2212.356917]  000000000000000c ffff8801f4dc2150 0000000000000000 ffffffffa02667e0
[ 2212.356980]  000000000000000d ffff880212f677b8 ffffffffa03a31ad ffff8801f4dc219a
[ 2212.357038]  ffff8801f4dc2150 0000000000000000 ffff8800b93217a0 ffff8801f49bc800
[ 2212.357099] Call Trace:
[ 2212.357122]  [&lt;ffffffffa02667e0&gt;] ? rt2x00usb_interrupt_txdone+0x90/0x90 [rt2x00usb]
[ 2212.357174]  [&lt;ffffffffa03a31ad&gt;] rt2x00queue_for_each_entry+0xed/0x170 [rt2x00lib]
[ 2212.357244]  [&lt;ffffffffa026701c&gt;] rt2x00usb_kick_queue+0x5c/0x60 [rt2x00usb]
[ 2212.357314]  [&lt;ffffffffa03a3682&gt;] rt2x00queue_flush_queue+0x62/0xa0 [rt2x00lib]
[ 2212.357386]  [&lt;ffffffffa03a2930&gt;] rt2x00mac_flush+0x30/0x70 [rt2x00lib]
[ 2212.357470]  [&lt;ffffffffa04edded&gt;] ieee80211_flush_queues+0xbd/0x140 [mac80211]
[ 2212.357555]  [&lt;ffffffffa0502e52&gt;] ieee80211_set_disassoc+0x2d2/0x3d0 [mac80211]
[ 2212.357645]  [&lt;ffffffffa0506da3&gt;] ieee80211_mgd_deauth+0x1d3/0x240 [mac80211]
[ 2212.357718]  [&lt;ffffffff8108b17c&gt;] ? try_to_wake_up+0xec/0x290
[ 2212.357788]  [&lt;ffffffffa04dbd18&gt;] ieee80211_deauth+0x18/0x20 [mac80211]
[ 2212.357872]  [&lt;ffffffffa0418ddc&gt;] cfg80211_mlme_deauth+0x9c/0x140 [cfg80211]
[ 2212.357913]  [&lt;ffffffffa041907c&gt;] cfg80211_mlme_down+0x5c/0x60 [cfg80211]
[ 2212.357962]  [&lt;ffffffffa041cd18&gt;] cfg80211_disconnect+0x188/0x1a0 [cfg80211]
[ 2212.358014]  [&lt;ffffffffa04013bc&gt;] ? __cfg80211_stop_sched_scan+0x1c/0x130 [cfg80211]
[ 2212.358067]  [&lt;ffffffffa03f8954&gt;] cfg80211_leave+0xc4/0xe0 [cfg80211]
[ 2212.358124]  [&lt;ffffffffa03f8d1b&gt;] cfg80211_netdev_notifier_call+0x3ab/0x5e0 [cfg80211]
[ 2212.358177]  [&lt;ffffffff815140f8&gt;] ? inetdev_event+0x38/0x510
[ 2212.358217]  [&lt;ffffffff81085a94&gt;] ? __wake_up+0x44/0x50
[ 2212.358254]  [&lt;ffffffff8155995c&gt;] notifier_call_chain+0x4c/0x70
[ 2212.358293]  [&lt;ffffffff81081156&gt;] raw_notifier_call_chain+0x16/0x20
[ 2212.358361]  [&lt;ffffffff814b6dd5&gt;] call_netdevice_notifiers_info+0x35/0x60
[ 2212.358429]  [&lt;ffffffff814b6ec9&gt;] __dev_close_many+0x49/0xd0
[ 2212.358487]  [&lt;ffffffff814b7028&gt;] dev_close_many+0x88/0x100
[ 2212.358546]  [&lt;ffffffff814b8150&gt;] rollback_registered_many+0xb0/0x220
[ 2212.358612]  [&lt;ffffffff814b8319&gt;] unregister_netdevice_many+0x19/0x60
[ 2212.358694]  [&lt;ffffffffa04d8eb2&gt;] ieee80211_remove_interfaces+0x112/0x190 [mac80211]
[ 2212.358791]  [&lt;ffffffffa04c585f&gt;] ieee80211_unregister_hw+0x4f/0x100 [mac80211]
[ 2212.361994]  [&lt;ffffffffa03a1221&gt;] rt2x00lib_remove_dev+0x161/0x1a0 [rt2x00lib]
[ 2212.365240]  [&lt;ffffffffa0266e2e&gt;] rt2x00usb_disconnect+0x2e/0x70 [rt2x00usb]
[ 2212.368470]  [&lt;ffffffff81419ce4&gt;] usb_unbind_interface+0x64/0x1c0
[ 2212.371734]  [&lt;ffffffff813b446f&gt;] __device_release_driver+0x7f/0xf0
[ 2212.374999]  [&lt;ffffffff813b4503&gt;] device_release_driver+0x23/0x30
[ 2212.378131]  [&lt;ffffffff813b3c98&gt;] bus_remove_device+0x108/0x180
[ 2212.381358]  [&lt;ffffffff813b0565&gt;] device_del+0x135/0x1d0
[ 2212.384454]  [&lt;ffffffff81417760&gt;] usb_disable_device+0xb0/0x270
[ 2212.387451]  [&lt;ffffffff8140d9cd&gt;] usb_disconnect+0xad/0x1d0
[ 2212.390294]  [&lt;ffffffff8140f6cd&gt;] hub_thread+0x63d/0x1660
[ 2212.393034]  [&lt;ffffffff8107c860&gt;] ? wake_up_atomic_t+0x30/0x30
[ 2212.395728]  [&lt;ffffffff8140f090&gt;] ? hub_port_debounce+0x130/0x130
[ 2212.398412]  [&lt;ffffffff8107baa0&gt;] kthread+0xc0/0xd0
[ 2212.401058]  [&lt;ffffffff8107b9e0&gt;] ? insert_kthread_work+0x40/0x40
[ 2212.403639]  [&lt;ffffffff8155de3c&gt;] ret_from_fork+0x7c/0xb0
[ 2212.406193]  [&lt;ffffffff8107b9e0&gt;] ? insert_kthread_work+0x40/0x40
[ 2212.408732] Code: 24 58 08 00 00 bf 80 00 00 00 e8 3a c3 e0 e0 5b 41 5c 5d c3 0f 1f 44 00 00 0f 1f 44 00 00 55 48 89 e5 41 57 41 56 41 55 41 54 53 &lt;48&gt; 8b 47 10 48 89 fb 4c 8b 6f 28 4c 8b 20 49 8b 04 24 4c 8b 30
[ 2212.414671] RIP  [&lt;ffffffffa02667f2&gt;] rt2x00usb_kick_tx_entry+0x12/0x160 [rt2x00usb]
[ 2212.417646]  RSP &lt;ffff880212f67750&gt;
[ 2212.420547] CR2: 0000000000000250
[ 2212.441024] ---[ end trace 5442918f33832bce ]---

Signed-off-by: Stanislaw Gruszka &lt;stf_xl@wp.pl&gt;
Acked-by: Helmut Schaa &lt;helmut.schaa@googlemail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2400pci: fix RSSI read</title>
<updated>2014-01-03T04:33:14+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>stf_xl@wp.pl</email>
</author>
<published>2013-10-15T12:28:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c13355c7b4a21643c7c940f94a589731224b1ada'/>
<id>c13355c7b4a21643c7c940f94a589731224b1ada</id>
<content type='text'>
commit 2bf127a5cc372b9319afcbae10b090663b621c8b upstream.

RSSI value is provided on word3 not on word2.

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: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 2bf127a5cc372b9319afcbae10b090663b621c8b upstream.

RSSI value is provided on word3 not on word2.

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: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2800: fix wrong TX power compensation</title>
<updated>2013-10-26T20:05:59+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>sgruszka@redhat.com</email>
</author>
<published>2013-08-26T13:18:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=72b55735d2f26b1dfcb206773974c465ca7ef04d'/>
<id>72b55735d2f26b1dfcb206773974c465ca7ef04d</id>
<content type='text'>
commit 6e956da2027c767859128b9bfef085cf2a8e233b upstream.

We should not do temperature compensation on devices without
EXTERNAL_TX_ALC bit set (called DynamicTxAgcControl on vendor driver).
Such devices can have totally bogus TSSI parameters on the EEPROM,
but still threaded by us as valid and result doing wrong TX power
calculations.

This fix inability to connect to AP on slightly longer distance on
some Ralink chips/devices.

Reported-and-tested-by: Fabien ADAM &lt;id2ndr@crocobox.org&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
[bwh: Backported to 3.2: use rt2x00_eeprom_read()]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 6e956da2027c767859128b9bfef085cf2a8e233b upstream.

We should not do temperature compensation on devices without
EXTERNAL_TX_ALC bit set (called DynamicTxAgcControl on vendor driver).
Such devices can have totally bogus TSSI parameters on the EEPROM,
but still threaded by us as valid and result doing wrong TX power
calculations.

This fix inability to connect to AP on slightly longer distance on
some Ralink chips/devices.

Reported-and-tested-by: Fabien ADAM &lt;id2ndr@crocobox.org&gt;
Signed-off-by: Stanislaw Gruszka &lt;sgruszka@redhat.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
[bwh: Backported to 3.2: use rt2x00_eeprom_read()]
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>rt2x00: fix stop queue</title>
<updated>2013-09-10T00:57:17+00:00</updated>
<author>
<name>Stanislaw Gruszka</name>
<email>stf_xl@wp.pl</email>
</author>
<published>2013-07-28T11:17:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9e77047af335a301ca5be02a7dcd5d73db0f92e5'/>
<id>9e77047af335a301ca5be02a7dcd5d73db0f92e5</id>
<content type='text'>
commit e2288b66fe7ff0288382b2af671b4da558b44472 upstream.

Since we clear QUEUE_STARTED in rt2x00queue_stop_queue(), following
call to rt2x00queue_pause_queue() reduce to noop, i.e we do not
stop queue in mac80211.

To fix that introduce rt2x00queue_pause_queue_nocheck() function,
which will stop queue in mac80211 directly.

Note that rt2x00_start_queue() explicitly set QUEUE_PAUSED bit.

Note also that reordering operations i.e. first call to
rt2x00queue_pause_queue() and then clear QUEUE_STARTED bit, will race
with rt2x00queue_unpause_queue(), so calling ieee80211_stop_queue()
directly is the only available solution to fix the problem without
major rework.

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: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit e2288b66fe7ff0288382b2af671b4da558b44472 upstream.

Since we clear QUEUE_STARTED in rt2x00queue_stop_queue(), following
call to rt2x00queue_pause_queue() reduce to noop, i.e we do not
stop queue in mac80211.

To fix that introduce rt2x00queue_pause_queue_nocheck() function,
which will stop queue in mac80211 directly.

Note that rt2x00_start_queue() explicitly set QUEUE_PAUSED bit.

Note also that reordering operations i.e. first call to
rt2x00queue_pause_queue() and then clear QUEUE_STARTED bit, will race
with rt2x00queue_unpause_queue(), so calling ieee80211_stop_queue()
directly is the only available solution to fix the problem without
major rework.

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: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</pre>
</div>
</content>
</entry>
</feed>
