<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/mac80211/util.c, branch v3.0.95</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>mac80211: fix ADDBA declined after suspend with wowlan</title>
<updated>2012-06-09T15:32:59+00:00</updated>
<author>
<name>Eyal Shapira</name>
<email>eyal@wizery.com</email>
</author>
<published>2012-05-29T09:00:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=6ec1d66c8d22bc76ebf37860a87ca399790beb5d'/>
<id>6ec1d66c8d22bc76ebf37860a87ca399790beb5d</id>
<content type='text'>
commit 7b21aea04d084916ac4e0e8852dcc9cd60ec0d1d upstream.

WLAN_STA_BLOCK_BA is set while suspending but doesn't get cleared
when resuming in case of wowlan. This causes further ADDBA requests
received to be rejected. Fix it by clearing it in the wowlan path
as well.

Signed-off-by: Eyal Shapira &lt;eyal@wizery.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 7b21aea04d084916ac4e0e8852dcc9cd60ec0d1d upstream.

WLAN_STA_BLOCK_BA is set while suspending but doesn't get cleared
when resuming in case of wowlan. This causes further ADDBA requests
received to be rejected. Fix it by clearing it in the wowlan path
as well.

Signed-off-by: Eyal Shapira &lt;eyal@wizery.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>mac80211: fix bug in ieee80211_build_probe_req</title>
<updated>2011-11-26T17:09:54+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2011-11-08T12:04:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ae1e9df381d5197015356e22de9d7acaf646a9ab'/>
<id>ae1e9df381d5197015356e22de9d7acaf646a9ab</id>
<content type='text'>
commit 5b2bbf75a24d6b06afff6de0eb4819413fd81971 upstream.

ieee80211_probereq_get() can return NULL in
which case we should clean up &amp; return NULL
in ieee80211_build_probe_req() as well.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

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

ieee80211_probereq_get() can return NULL in
which case we should clean up &amp; return NULL
in ieee80211_build_probe_req() as well.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: add basic support for WoWLAN</title>
<updated>2011-05-05T18:59:20+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2011-05-04T13:37:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=eecc48000afe2ca6da22122d553b7cad294e42fc'/>
<id>eecc48000afe2ca6da22122d553b7cad294e42fc</id>
<content type='text'>
This adds basic support for the new WoWLAN
configuration in mac80211. The behaviour is
completely offloaded to the driver though,
with two new callbacks (suspend/resume).

Options for the driver include a complete
reconfiguration after wakeup, and exposing
all the triggers it wants to support.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.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>
This adds basic support for the new WoWLAN
configuration in mac80211. The behaviour is
completely offloaded to the driver though,
with two new callbacks (suspend/resume).

Options for the driver include a complete
reconfiguration after wakeup, and exposing
all the triggers it wants to support.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: clean up station cleanup timer</title>
<updated>2011-04-04T20:20:07+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2011-04-01T11:52:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=26d59535aa08386b97ece58a27bb16fca4f066db'/>
<id>26d59535aa08386b97ece58a27bb16fca4f066db</id>
<content type='text'>
We currently run this timer exactly once when
a new mac80211 device is registered, but that
is completely pointless since it will have no
work to do at all. Therefore, remove that and
also simplify some code using the timer.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.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>
We currently run this timer exactly once when
a new mac80211 device is registered, but that
is completely pointless since it will have no
work to do at all. Therefore, remove that and
also simplify some code using the timer.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6</title>
<updated>2011-02-18T22:03:41+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2011-02-18T22:03:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b67afe7f43afd2f5cd98798993561920c1684c12'/>
<id>b67afe7f43afd2f5cd98798993561920c1684c12</id>
<content type='text'>
Conflicts:
	drivers/bluetooth/ath3k.c
	drivers/bluetooth/btusb.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	drivers/bluetooth/ath3k.c
	drivers/bluetooth/btusb.c
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: fix 2.4 GHz 40 MHz disabling</title>
<updated>2011-02-18T21:54:52+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2011-02-16T07:46:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8ba0537c620ad9f37b0e810ce0a9ff367a021f5e'/>
<id>8ba0537c620ad9f37b0e810ce0a9ff367a021f5e</id>
<content type='text'>
The module parameter ieee80211_disable_40mhz_24ghz
was meant to allow disabling 40 MHz operation in
the 2.4 GHz band by default. However, it is buggy
as implemented because while it advertises to the
AP that the device doesn't support 40 MHz, it will
itself still use 40 MHz configurations.

To fix this, clear the 40 MHz bits from the sband
completely instead of overriding where used.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.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 module parameter ieee80211_disable_40mhz_24ghz
was meant to allow disabling 40 MHz operation in
the 2.4 GHz band by default. However, it is buggy
as implemented because while it advertises to the
AP that the device doesn't support 40 MHz, it will
itself still use 40 MHz configurations.

To fix this, clear the 40 MHz bits from the sband
completely instead of overriding where used.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: add missing locking in ieee80211_reconfig</title>
<updated>2011-02-09T20:35:13+00:00</updated>
<author>
<name>Eliad Peller</name>
<email>eliad@wizery.com</email>
</author>
<published>2011-02-08T16:43:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=a7b545f7fe753ca3dc1b51ca57f90cd59d974e44'/>
<id>a7b545f7fe753ca3dc1b51ca57f90cd59d974e44</id>
<content type='text'>
When suspending an associated system, and then resuming,
the station vif is being reconfigured without taking the
sdata-&gt;u.mgd.mtx lock, which results in the following warning:

WARNING: at net/mac80211/mlme.c:101 ieee80211_ap_probereq_get+0x58/0xb8 [mac80211]()
Modules linked in: wl12xx_sdio wl12xx firmware_class crc7 mac80211 cfg80211 [last unloaded: crc7]
Backtrace:
[&lt;c005432c&gt;] (dump_backtrace+0x0/0x118) from [&lt;c0376e28&gt;] (dump_stack+0x20/0x24)
 r7:00000000 r6:bf12d6ec r5:bf154aac r4:00000065
[&lt;c0376e08&gt;] (dump_stack+0x0/0x24) from [&lt;c0079104&gt;] (warn_slowpath_common+0x5c/0x74)
[&lt;c00790a8&gt;] (warn_slowpath_common+0x0/0x74) from [&lt;c0079148&gt;] (warn_slowpath_null+0x2c/0x34)
 r9:000024ff r8:cd006460 r7:00000001 r6:00000000 r5:00000000
r4:cf1394a0
[&lt;c007911c&gt;] (warn_slowpath_null+0x0/0x34) from [&lt;bf12d6ec&gt;] (ieee80211_ap_probereq_get+0x58/0xb8 [mac80211])
[&lt;bf12d694&gt;] (ieee80211_ap_probereq_get+0x0/0xb8 [mac80211]) from [&lt;bf19cd04&gt;] (wl1271_cmd_build_ap_probe_req+0x30/0xf8 [wl12xx])
 r4:cd007440
[&lt;bf19ccd4&gt;] (wl1271_cmd_build_ap_probe_req+0x0/0xf8 [wl12xx]) from [&lt;bf1995f4&gt;] (wl1271_op_bss_info_changed+0x4c4/0x808 [wl12xx])
 r5:cd007440 r4:000003b4
[&lt;bf199130&gt;] (wl1271_op_bss_info_changed+0x0/0x808 [wl12xx]) from [&lt;bf122168&gt;] (ieee80211_bss_info_change_notify+0x1a4/0x1f8 [mac80211])
[&lt;bf121fc4&gt;] (ieee80211_bss_info_change_notify+0x0/0x1f8 [mac80211]) from [&lt;bf141e80&gt;] (ieee80211_reconfig+0x4d0/0x668 [mac80211])
 r8:cf0eeea4 r7:cd00671c r6:00000000 r5:cd006460 r4:cf1394a0
[&lt;bf1419b0&gt;] (ieee80211_reconfig+0x0/0x668 [mac80211]) from [&lt;bf137dd4&gt;] (ieee80211_resume+0x60/0x70 [mac80211])
[&lt;bf137d74&gt;] (ieee80211_resume+0x0/0x70 [mac80211]) from [&lt;bf0eb930&gt;] (wiphy_resume+0x6c/0x7c [cfg80211])
 r5:cd006248 r4:cd006110
[&lt;bf0eb8c4&gt;] (wiphy_resume+0x0/0x7c [cfg80211]) from [&lt;c0241024&gt;] (legacy_resume+0x38/0x70)
 r7:00000000 r6:00000000 r5:cd006248 r4:cd0062fc
[&lt;c0240fec&gt;] (legacy_resume+0x0/0x70) from [&lt;c0241478&gt;] (device_resume+0x168/0x1a0)
 r8:c04ca8d8 r7:cd00627c r6:00000010 r5:cd006248 r4:cd0062fc
[&lt;c0241310&gt;] (device_resume+0x0/0x1a0) from [&lt;c0241600&gt;] (dpm_resume_end+0xf8/0x3bc)
 r7:00000000 r6:00000005 r5:cd006248 r4:cd0062fc
[&lt;c0241508&gt;] (dpm_resume_end+0x0/0x3bc) from [&lt;c00b2a24&gt;] (suspend_devices_and_enter+0x1b0/0x204)
[&lt;c00b2874&gt;] (suspend_devices_and_enter+0x0/0x204) from [&lt;c00b2b68&gt;] (enter_state+0xf0/0x148)
 r7:c037e978 r6:00000003 r5:c043d807 r4:00000000
[&lt;c00b2a78&gt;] (enter_state+0x0/0x148) from [&lt;c00b20a4&gt;] (state_store+0xa4/0xcc)
 r7:c037e978 r6:00000003 r5:00000003 r4:c043d807
[&lt;c00b2000&gt;] (state_store+0x0/0xcc) from [&lt;c01fc90c&gt;] (kobj_attr_store+0x20/0x24)
[&lt;c01fc8ec&gt;] (kobj_attr_store+0x0/0x24) from [&lt;c0157120&gt;] (sysfs_write_file+0x11c/0x150)
[&lt;c0157004&gt;] (sysfs_write_file+0x0/0x150) from [&lt;c0100f84&gt;] (vfs_write+0xc0/0x14c)
[&lt;c0100ec4&gt;] (vfs_write+0x0/0x14c) from [&lt;c01010e4&gt;] (sys_write+0x4c/0x78)
 r8:40126000 r7:00000004 r6:cf1a7c80 r5:00000000 r4:00000000
[&lt;c0101098&gt;] (sys_write+0x0/0x78) from [&lt;c00500c0&gt;] (ret_fast_syscall+0x0/0x30)
 r8:c00502c8 r7:00000004 r6:403525e8 r5:40126000 r4:00000004

Signed-off-by: Eliad Peller &lt;eliad@wizery.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>
When suspending an associated system, and then resuming,
the station vif is being reconfigured without taking the
sdata-&gt;u.mgd.mtx lock, which results in the following warning:

WARNING: at net/mac80211/mlme.c:101 ieee80211_ap_probereq_get+0x58/0xb8 [mac80211]()
Modules linked in: wl12xx_sdio wl12xx firmware_class crc7 mac80211 cfg80211 [last unloaded: crc7]
Backtrace:
[&lt;c005432c&gt;] (dump_backtrace+0x0/0x118) from [&lt;c0376e28&gt;] (dump_stack+0x20/0x24)
 r7:00000000 r6:bf12d6ec r5:bf154aac r4:00000065
[&lt;c0376e08&gt;] (dump_stack+0x0/0x24) from [&lt;c0079104&gt;] (warn_slowpath_common+0x5c/0x74)
[&lt;c00790a8&gt;] (warn_slowpath_common+0x0/0x74) from [&lt;c0079148&gt;] (warn_slowpath_null+0x2c/0x34)
 r9:000024ff r8:cd006460 r7:00000001 r6:00000000 r5:00000000
r4:cf1394a0
[&lt;c007911c&gt;] (warn_slowpath_null+0x0/0x34) from [&lt;bf12d6ec&gt;] (ieee80211_ap_probereq_get+0x58/0xb8 [mac80211])
[&lt;bf12d694&gt;] (ieee80211_ap_probereq_get+0x0/0xb8 [mac80211]) from [&lt;bf19cd04&gt;] (wl1271_cmd_build_ap_probe_req+0x30/0xf8 [wl12xx])
 r4:cd007440
[&lt;bf19ccd4&gt;] (wl1271_cmd_build_ap_probe_req+0x0/0xf8 [wl12xx]) from [&lt;bf1995f4&gt;] (wl1271_op_bss_info_changed+0x4c4/0x808 [wl12xx])
 r5:cd007440 r4:000003b4
[&lt;bf199130&gt;] (wl1271_op_bss_info_changed+0x0/0x808 [wl12xx]) from [&lt;bf122168&gt;] (ieee80211_bss_info_change_notify+0x1a4/0x1f8 [mac80211])
[&lt;bf121fc4&gt;] (ieee80211_bss_info_change_notify+0x0/0x1f8 [mac80211]) from [&lt;bf141e80&gt;] (ieee80211_reconfig+0x4d0/0x668 [mac80211])
 r8:cf0eeea4 r7:cd00671c r6:00000000 r5:cd006460 r4:cf1394a0
[&lt;bf1419b0&gt;] (ieee80211_reconfig+0x0/0x668 [mac80211]) from [&lt;bf137dd4&gt;] (ieee80211_resume+0x60/0x70 [mac80211])
[&lt;bf137d74&gt;] (ieee80211_resume+0x0/0x70 [mac80211]) from [&lt;bf0eb930&gt;] (wiphy_resume+0x6c/0x7c [cfg80211])
 r5:cd006248 r4:cd006110
[&lt;bf0eb8c4&gt;] (wiphy_resume+0x0/0x7c [cfg80211]) from [&lt;c0241024&gt;] (legacy_resume+0x38/0x70)
 r7:00000000 r6:00000000 r5:cd006248 r4:cd0062fc
[&lt;c0240fec&gt;] (legacy_resume+0x0/0x70) from [&lt;c0241478&gt;] (device_resume+0x168/0x1a0)
 r8:c04ca8d8 r7:cd00627c r6:00000010 r5:cd006248 r4:cd0062fc
[&lt;c0241310&gt;] (device_resume+0x0/0x1a0) from [&lt;c0241600&gt;] (dpm_resume_end+0xf8/0x3bc)
 r7:00000000 r6:00000005 r5:cd006248 r4:cd0062fc
[&lt;c0241508&gt;] (dpm_resume_end+0x0/0x3bc) from [&lt;c00b2a24&gt;] (suspend_devices_and_enter+0x1b0/0x204)
[&lt;c00b2874&gt;] (suspend_devices_and_enter+0x0/0x204) from [&lt;c00b2b68&gt;] (enter_state+0xf0/0x148)
 r7:c037e978 r6:00000003 r5:c043d807 r4:00000000
[&lt;c00b2a78&gt;] (enter_state+0x0/0x148) from [&lt;c00b20a4&gt;] (state_store+0xa4/0xcc)
 r7:c037e978 r6:00000003 r5:00000003 r4:c043d807
[&lt;c00b2000&gt;] (state_store+0x0/0xcc) from [&lt;c01fc90c&gt;] (kobj_attr_store+0x20/0x24)
[&lt;c01fc8ec&gt;] (kobj_attr_store+0x0/0x24) from [&lt;c0157120&gt;] (sysfs_write_file+0x11c/0x150)
[&lt;c0157004&gt;] (sysfs_write_file+0x0/0x150) from [&lt;c0100f84&gt;] (vfs_write+0xc0/0x14c)
[&lt;c0100ec4&gt;] (vfs_write+0x0/0x14c) from [&lt;c01010e4&gt;] (sys_write+0x4c/0x78)
 r8:40126000 r7:00000004 r6:cf1a7c80 r5:00000000 r4:00000000
[&lt;c0101098&gt;] (sys_write+0x0/0x78) from [&lt;c00500c0&gt;] (ret_fast_syscall+0x0/0x30)
 r8:c00502c8 r7:00000004 r6:403525e8 r5:40126000 r4:00000004

Signed-off-by: Eliad Peller &lt;eliad@wizery.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: selective throughput LED trigger active</title>
<updated>2010-12-22T19:33:37+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2010-11-30T07:59:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=67408c8c7b9daf28b50e33be3541334c07d15789'/>
<id>67408c8c7b9daf28b50e33be3541334c07d15789</id>
<content type='text'>
The throughput LED trigger was always active when
the radio was enabled. In most cases that's likely
the desired behaviour, but iwlwifi requires it to
be only active when one of the virtual interfaces
is actually "connected" in some way.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.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 throughput LED trigger was always active when
the radio was enabled. In most cases that's likely
the desired behaviour, but iwlwifi requires it to
be only active when one of the virtual interfaces
is actually "connected" in some way.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: add throughput based LED blink trigger</title>
<updated>2010-12-22T19:33:37+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2010-11-30T07:58:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e1e5406854378dfada3f33c7192b012083a5b8e0'/>
<id>e1e5406854378dfada3f33c7192b012083a5b8e0</id>
<content type='text'>
iwlwifi and other drivers like to blink their LED
based on throughput. Implement this generically in
mac80211, based on a throughput table the driver
specifies. That way, drivers can set the blink
frequencies depending on their desired behaviour
and max throughput.

All the drivers need to do is provide an LED class
device, best with blink hardware offload.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.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>
iwlwifi and other drivers like to blink their LED
based on throughput. Implement this generically in
mac80211, based on a throughput table the driver
specifies. That way, drivers can set the blink
frequencies depending on their desired behaviour
and max throughput.

All the drivers need to do is provide an LED class
device, best with blink hardware offload.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mac80211: fix powersaving clients races</title>
<updated>2010-11-17T21:19:33+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2010-11-16T19:50:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=50a9432daeece6fc1309bef1dc0a7b8fde8204cb'/>
<id>50a9432daeece6fc1309bef1dc0a7b8fde8204cb</id>
<content type='text'>
The code to handle powersaving stations has a race:
when the powersave flag is lifted from a station,
we could transmit a packet that is being processed
for TX at the same time right away, even if there
are other frames queued for it. This would cause
frame reordering. To fix this, lift the flag only
under the appropriate lock that blocks TX.

Additionally, the code to allow drivers to block a
station while frames for it are on the HW queue is
never re-enabled the station, so traffic would get
stuck indefinitely. Fix this by clearing the flag
for this appropriately.

Finally, as an optimisation, don't do anything if
the driver unblocks an already unblocked station.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.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 code to handle powersaving stations has a race:
when the powersave flag is lifted from a station,
we could transmit a packet that is being processed
for TX at the same time right away, even if there
are other frames queued for it. This would cause
frame reordering. To fix this, lift the flag only
under the appropriate lock that blocks TX.

Additionally, the code to allow drivers to block a
station while frames for it are on the HW queue is
never re-enabled the station, so traffic would get
stuck indefinitely. Fix this by clearing the flag
for this appropriately.

Finally, as an optimisation, don't do anything if
the driver unblocks an already unblocked station.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
Signed-off-by: John W. Linville &lt;linville@tuxdriver.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
