<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/net/wireless/ath, branch v3.3</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>carl9170: fix frame delivery if sta is in powersave mode</title>
<updated>2012-02-29T18:08:51+00:00</updated>
<author>
<name>Christian Lamparter</name>
<email>chunkeey@googlemail.com</email>
</author>
<published>2012-02-25T20:36:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9926a67557532acb6cddb1c1add02952175b5c72'/>
<id>9926a67557532acb6cddb1c1add02952175b5c72</id>
<content type='text'>
Nicolas Cavallari discovered that carl9170 has some
serious problems delivering data to sleeping stations.

It turns out that the driver was not honoring two
important flags (IEEE80211_TX_CTL_POLL_RESPONSE and
IEEE80211_TX_CTL_CLEAR_PS_FILT) which are set on
frames that should be sent although the receiving
station is still in powersave mode.

Cc: stable &lt;stable@vger.kernel.org&gt;
Reported-by: Nicolas Cavallari &lt;Nicolas.Cavallari@lri.fr&gt;
Signed-off-by: Christian Lamparter &lt;chunkeey@googlemail.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>
Nicolas Cavallari discovered that carl9170 has some
serious problems delivering data to sleeping stations.

It turns out that the driver was not honoring two
important flags (IEEE80211_TX_CTL_POLL_RESPONSE and
IEEE80211_TX_CTL_CLEAR_PS_FILT) which are set on
frames that should be sent although the receiving
station is still in powersave mode.

Cc: stable &lt;stable@vger.kernel.org&gt;
Reported-by: Nicolas Cavallari &lt;Nicolas.Cavallari@lri.fr&gt;
Signed-off-by: Christian Lamparter &lt;chunkeey@googlemail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>carl9170: Fix memory accounting when sta is in power-save mode.</title>
<updated>2012-02-29T18:08:51+00:00</updated>
<author>
<name>Nicolas Cavallari</name>
<email>Nicolas.Cavallari@lri.fr</email>
</author>
<published>2012-02-23T15:53:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=992d52529d7840236d3059b51c15d5eb9e81a869'/>
<id>992d52529d7840236d3059b51c15d5eb9e81a869</id>
<content type='text'>
On Access Point mode, when transmitting a packet, if the destination
station is in powersave mode, we abort transmitting the packet to the
device queue, but we do not reclaim the allocated memory.  Given enough
packets, we can go in a state where there is no packet on the device
queue, but we think the device has no memory left, so no packet gets
transmitted, connections breaks and the AP stops working.

This undo the allocation done in the TX path when the station is in
power-save mode.

Signed-off-by: Nicolas Cavallari &lt;cavallar@lri.fr&gt;
Acked-by: Christian Lamparter &lt;chunkeey@googlemail.com&gt;
Cc: stable &lt;stable@vger.kernel.org&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>
On Access Point mode, when transmitting a packet, if the destination
station is in powersave mode, we abort transmitting the packet to the
device queue, but we do not reclaim the allocated memory.  Given enough
packets, we can go in a state where there is no packet on the device
queue, but we think the device has no memory left, so no packet gets
transmitted, connections breaks and the AP stops working.

This undo the allocation done in the TX path when the station is in
power-save mode.

Signed-off-by: Nicolas Cavallari &lt;cavallar@lri.fr&gt;
Acked-by: Christian Lamparter &lt;chunkeey@googlemail.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ath9k_hw: prevent writes to const data on AR9160</title>
<updated>2012-02-21T19:45:25+00:00</updated>
<author>
<name>Felix Fietkau</name>
<email>nbd@openwrt.org</email>
</author>
<published>2012-02-15T18:31:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9bbb8168ed3d8b946f9c1901a63a675012de88f2'/>
<id>9bbb8168ed3d8b946f9c1901a63a675012de88f2</id>
<content type='text'>
Duplicate the data for iniAddac early on, to avoid having to do redundant
memcpy calls later. While we're at it, make AR5416 &lt; v2.2 use the same
codepath. Fixes a reported crash on x86.

Signed-off-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Reported-by: Magnus Määttä &lt;magnus.maatta@logica.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Duplicate the data for iniAddac early on, to avoid having to do redundant
memcpy calls later. While we're at it, make AR5416 &lt; v2.2 use the same
codepath. Fixes a reported crash on x86.

Signed-off-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Reported-by: Magnus Määttä &lt;magnus.maatta@logica.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ath9k: stop on rates with idx -1 in ath9k rate control's .tx_status</title>
<updated>2012-02-15T18:56:15+00:00</updated>
<author>
<name>Pavel Roskin</name>
<email>proski@gnu.org</email>
</author>
<published>2012-02-11T15:01:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=2504a6423b9ab4c36df78227055995644de19edb'/>
<id>2504a6423b9ab4c36df78227055995644de19edb</id>
<content type='text'>
Rate control algorithms are supposed to stop processing when they
encounter a rate with the index -1.  Checking for rate-&gt;count not being
zero is not enough.

Allowing a rate with negative index leads to memory corruption in
ath_debug_stat_rc().

One consequence of the bug is discussed at
https://bugzilla.redhat.com/show_bug.cgi?id=768639

Signed-off-by: Pavel Roskin &lt;proski@gnu.org&gt;
Cc: stable@vger.kernel.org
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Rate control algorithms are supposed to stop processing when they
encounter a rate with the index -1.  Checking for rate-&gt;count not being
zero is not enough.

Allowing a rate with negative index leads to memory corruption in
ath_debug_stat_rc().

One consequence of the bug is discussed at
https://bugzilla.redhat.com/show_bug.cgi?id=768639

Signed-off-by: Pavel Roskin &lt;proski@gnu.org&gt;
Cc: stable@vger.kernel.org
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ath9k_hw: fix a RTS/CTS timeout regression</title>
<updated>2012-02-06T16:34:02+00:00</updated>
<author>
<name>Felix Fietkau</name>
<email>nbd@openwrt.org</email>
</author>
<published>2012-02-05T20:15:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=55a2bb4a6d5e8c7b324d003e130fd9aaf33be4e6'/>
<id>55a2bb4a6d5e8c7b324d003e130fd9aaf33be4e6</id>
<content type='text'>
commit adb5066 "ath9k_hw: do not apply the 2.4 ghz ack timeout
workaround to cts" reduced the hardware CTS timeout to the normal
values specified by the standard, but it turns out while it doesn't
need the same extra time that it needs for the ACK timeout, it
does need more than the value specified in the standard, but only
for 2.4 GHz.

This patch brings the CTS timeout value in sync with the initialization
values, while still allowing adjustment for bigger distances.

Signed-off-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Cc: stable@vger.kernel.org
Reported-by: Seth Forshee &lt;seth.forshee@canonical.com&gt;
Reported-by: Marek Lindner &lt;lindner_marek@yahoo.de&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>
commit adb5066 "ath9k_hw: do not apply the 2.4 ghz ack timeout
workaround to cts" reduced the hardware CTS timeout to the normal
values specified by the standard, but it turns out while it doesn't
need the same extra time that it needs for the ACK timeout, it
does need more than the value specified in the standard, but only
for 2.4 GHz.

This patch brings the CTS timeout value in sync with the initialization
values, while still allowing adjustment for bigger distances.

Signed-off-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Cc: stable@vger.kernel.org
Reported-by: Seth Forshee &lt;seth.forshee@canonical.com&gt;
Reported-by: Marek Lindner &lt;lindner_marek@yahoo.de&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ath9k: fix a WEP crypto related regression</title>
<updated>2012-02-06T16:34:02+00:00</updated>
<author>
<name>Felix Fietkau</name>
<email>nbd@openwrt.org</email>
</author>
<published>2012-02-05T20:15:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f88373fa47f3ce6590fdfaa742d0ddacc2ae017f'/>
<id>f88373fa47f3ce6590fdfaa742d0ddacc2ae017f</id>
<content type='text'>
commit b4a82a0 "ath9k_hw: fix interpretation of the rx KeyMiss flag"
fixed the interpretation of the KeyMiss flag for keycache based lookups,
however WEP encryption uses a static index, so KeyMiss is always asserted
for it, even though frames are decrypted properly.
Fix this by clearing the ATH9K_RXERR_KEYMISS flag if no keycache based
lookup was performed.

Signed-off-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Cc: stable@vger.kernel.org
Reported-by: Laurent Bonnans &lt;bonnans.l@gmail.com&gt;
Reported-by: Jurica Vukadin &lt;u.ra604@googlemail.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>
commit b4a82a0 "ath9k_hw: fix interpretation of the rx KeyMiss flag"
fixed the interpretation of the KeyMiss flag for keycache based lookups,
however WEP encryption uses a static index, so KeyMiss is always asserted
for it, even though frames are decrypted properly.
Fix this by clearing the ATH9K_RXERR_KEYMISS flag if no keycache based
lookup was performed.

Signed-off-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Cc: stable@vger.kernel.org
Reported-by: Laurent Bonnans &lt;bonnans.l@gmail.com&gt;
Reported-by: Jurica Vukadin &lt;u.ra604@googlemail.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ath9k: Fix kernel panic during driver initilization</title>
<updated>2012-02-03T19:18:02+00:00</updated>
<author>
<name>Mohammed Shafi Shajakhan</name>
<email>mohammed@qca.qualcomm.com</email>
</author>
<published>2012-02-02T10:59:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=07445f688218a48bde72316aed9de4fdcc173131'/>
<id>07445f688218a48bde72316aed9de4fdcc173131</id>
<content type='text'>
all works need to be initialized before ieee80211_register_hw
to prevent mac80211 call backs such as drv_start, drv_config
getting started. otherwise we would queue/cancel works before
initializing them and it leads to kernel panic.
this issue can be recreated with the following script
in Chrome laptops with AR928X cards, with background scan
running (or) Network manager is running

while true
do
sudo modprobe -v ath9k
sleep 3
sudo modprobe -r ath9k
sleep 3
done

	 EIP: [&lt;81040a47&gt;] __cancel_work_timer+0xb8/0xe1 SS:ESP 0068:f6be9d70
	 ---[ end trace 4f86d6139a9900ef ]---
	 Registered led device: ath9k-phy0
	 ieee80211 phy0: Atheros AR9280 Rev:2 mem=0xf88a0000,
	 irq=16
	 Kernel panic - not syncing: Fatal exception
	 Pid: 456, comm: wpa_supplicant Tainted: G      D
	 3.0.13 #1
	Call Trace:
	 [&lt;81379e21&gt;] panic+0x53/0x14a
	 [&lt;81004a30&gt;] oops_end+0x73/0x81
	 [&lt;81004b53&gt;] die+0x4c/0x55
	 [&lt;81002710&gt;] do_trap+0x7c/0x83
	 [&lt;81002855&gt;] ? do_bounds+0x58/0x58
	 [&lt;810028cc&gt;] do_invalid_op+0x77/0x81
	 [&lt;81040a47&gt;] ? __cancel_work_timer+0xb8/0xe1
	 [&lt;810489ec&gt;] ? sched_clock_cpu+0x81/0x11f
	 [&lt;8103f809&gt;] ? wait_on_work+0xe2/0xf7
	 [&lt;8137f807&gt;] error_code+0x67/0x6c
	 [&lt;810300d8&gt;] ? wait_consider_task+0x4ba/0x84c
	 [&lt;81040a47&gt;] ? __cancel_work_timer+0xb8/0xe1
	 [&lt;810380c9&gt;] ? try_to_del_timer_sync+0x5f/0x67
	 [&lt;81040a91&gt;] cancel_work_sync+0xf/0x11
	 [&lt;f88d7b7c&gt;] ath_set_channel+0x62/0x25c [ath9k]
	 [&lt;f88d67d1&gt;] ? ath9k_tx_last_beacon+0x26a/0x85c [ath9k]
	 [&lt;f88d8899&gt;] ath_radio_disable+0x3f1/0x68e [ath9k]
	 [&lt;f90d0edb&gt;] ieee80211_hw_config+0x111/0x116 [mac80211]
	 [&lt;f90dd95c&gt;] __ieee80211_recalc_idle+0x919/0xa37 [mac80211]
	 [&lt;f90dda76&gt;] __ieee80211_recalc_idle+0xa33/0xa37 [mac80211]
	 [&lt;812dbed8&gt;] __dev_open+0x82/0xab

Cc: &lt;stable@vger.kernel.org&gt;
Cc: Gary Morain &lt;gmorain@google.com&gt;
Cc: Paul Stewart &lt;pstew@google.com&gt;
Cc: Vasanthakumar Thiagarajan &lt;vthiagar@qca.qualcomm.com&gt;
Tested-by: Mohammed Shafi Shajakhan &lt;mohammed@qca.qualcomm.com&gt;
Signed-off-by: Rajkumar Manoharan &lt;rmanohar@qca.qualcomm.com&gt;
Signed-off-by: Mohammed Shafi Shajakhan &lt;mohammed@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>
all works need to be initialized before ieee80211_register_hw
to prevent mac80211 call backs such as drv_start, drv_config
getting started. otherwise we would queue/cancel works before
initializing them and it leads to kernel panic.
this issue can be recreated with the following script
in Chrome laptops with AR928X cards, with background scan
running (or) Network manager is running

while true
do
sudo modprobe -v ath9k
sleep 3
sudo modprobe -r ath9k
sleep 3
done

	 EIP: [&lt;81040a47&gt;] __cancel_work_timer+0xb8/0xe1 SS:ESP 0068:f6be9d70
	 ---[ end trace 4f86d6139a9900ef ]---
	 Registered led device: ath9k-phy0
	 ieee80211 phy0: Atheros AR9280 Rev:2 mem=0xf88a0000,
	 irq=16
	 Kernel panic - not syncing: Fatal exception
	 Pid: 456, comm: wpa_supplicant Tainted: G      D
	 3.0.13 #1
	Call Trace:
	 [&lt;81379e21&gt;] panic+0x53/0x14a
	 [&lt;81004a30&gt;] oops_end+0x73/0x81
	 [&lt;81004b53&gt;] die+0x4c/0x55
	 [&lt;81002710&gt;] do_trap+0x7c/0x83
	 [&lt;81002855&gt;] ? do_bounds+0x58/0x58
	 [&lt;810028cc&gt;] do_invalid_op+0x77/0x81
	 [&lt;81040a47&gt;] ? __cancel_work_timer+0xb8/0xe1
	 [&lt;810489ec&gt;] ? sched_clock_cpu+0x81/0x11f
	 [&lt;8103f809&gt;] ? wait_on_work+0xe2/0xf7
	 [&lt;8137f807&gt;] error_code+0x67/0x6c
	 [&lt;810300d8&gt;] ? wait_consider_task+0x4ba/0x84c
	 [&lt;81040a47&gt;] ? __cancel_work_timer+0xb8/0xe1
	 [&lt;810380c9&gt;] ? try_to_del_timer_sync+0x5f/0x67
	 [&lt;81040a91&gt;] cancel_work_sync+0xf/0x11
	 [&lt;f88d7b7c&gt;] ath_set_channel+0x62/0x25c [ath9k]
	 [&lt;f88d67d1&gt;] ? ath9k_tx_last_beacon+0x26a/0x85c [ath9k]
	 [&lt;f88d8899&gt;] ath_radio_disable+0x3f1/0x68e [ath9k]
	 [&lt;f90d0edb&gt;] ieee80211_hw_config+0x111/0x116 [mac80211]
	 [&lt;f90dd95c&gt;] __ieee80211_recalc_idle+0x919/0xa37 [mac80211]
	 [&lt;f90dda76&gt;] __ieee80211_recalc_idle+0xa33/0xa37 [mac80211]
	 [&lt;812dbed8&gt;] __dev_open+0x82/0xab

Cc: &lt;stable@vger.kernel.org&gt;
Cc: Gary Morain &lt;gmorain@google.com&gt;
Cc: Paul Stewart &lt;pstew@google.com&gt;
Cc: Vasanthakumar Thiagarajan &lt;vthiagar@qca.qualcomm.com&gt;
Tested-by: Mohammed Shafi Shajakhan &lt;mohammed@qca.qualcomm.com&gt;
Signed-off-by: Rajkumar Manoharan &lt;rmanohar@qca.qualcomm.com&gt;
Signed-off-by: Mohammed Shafi Shajakhan &lt;mohammed@qca.qualcomm.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ath9k: use WARN_ON_ONCE in ath_rc_get_highest_rix</title>
<updated>2012-02-03T19:17:12+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2012-01-30T15:55:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8149415efa033ca138c0080ded77329e98697c7b'/>
<id>8149415efa033ca138c0080ded77329e98697c7b</id>
<content type='text'>
The device seems to survive the issue, so no need to flood the logs
about it...

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 device seems to survive the issue, so no need to flood the logs
about it...

Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ath9k_hw: fix interpretation of the rx KeyMiss flag</title>
<updated>2012-01-16T20:01:15+00:00</updated>
<author>
<name>Felix Fietkau</name>
<email>nbd@openwrt.org</email>
</author>
<published>2012-01-14T14:08:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7a532fe7131216a02c81a6c1b1f8632da1195a58'/>
<id>7a532fe7131216a02c81a6c1b1f8632da1195a58</id>
<content type='text'>
Documentation states that the KeyMiss flag is only valid if RxFrameOK is
unset, however empirical evidence has shown that this is false.
When KeyMiss is set (and RxFrameOK is 1), the hardware passes a valid frame
which has not been decrypted. The driver then falsely marks the frame
as decrypted, and when using CCMP this corrupts the rx CCMP PN, leading
to connection hangs.

Signed-off-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Cc: stable@kernel.org
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Documentation states that the KeyMiss flag is only valid if RxFrameOK is
unset, however empirical evidence has shown that this is false.
When KeyMiss is set (and RxFrameOK is 1), the hardware passes a valid frame
which has not been decrypted. The driver then falsely marks the frame
as decrypted, and when using CCMP this corrupts the rx CCMP PN, leading
to connection hangs.

Signed-off-by: Felix Fietkau &lt;nbd@openwrt.org&gt;
Cc: stable@kernel.org
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless</title>
<updated>2012-01-12T20:10:00+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2012-01-12T20:10:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9ee6045f09a7875ebe55b9942b232a19076b157b'/>
<id>9ee6045f09a7875ebe55b9942b232a19076b157b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
