<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lwn.git/net/mac80211/rx.c, branch v3.14.3</title>
<subtitle>Linux kernel documentation tree maintained by Jonathan Corbet</subtitle>
<id>http://mirrors.hust.edu.cn/git/lwn.git/atom?h=v3.14.3</id>
<link rel='self' href='http://mirrors.hust.edu.cn/git/lwn.git/atom?h=v3.14.3'/>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/'/>
<updated>2014-02-20T10:54:09+00:00</updated>
<entry>
<title>mac80211: fix station wakeup powersave race</title>
<updated>2014-02-20T10:54:09+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2014-02-20T10:19:58+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=e3685e03b40f5ec7926d9a75bf63467fc4071df9'/>
<id>urn:sha1:e3685e03b40f5ec7926d9a75bf63467fc4071df9</id>
<content type='text'>
Consider the following (relatively unlikely) scenario:
 1) station goes to sleep while frames are buffered in driver
 2) driver blocks wakeup (until no more frames are buffered)
 3) station wakes up again
 4) driver unblocks wakeup

In this case, the current mac80211 code will do the following:
 1) WLAN_STA_PS_STA set
 2) WLAN_STA_PS_DRIVER set
 3) - nothing -
 4) WLAN_STA_PS_DRIVER cleared

As a result, no frames will be delivered to the client, even
though it is awake, until it sends another frame to us that
triggers ieee80211_sta_ps_deliver_wakeup() in sta_ps_end().

Since we now take the PS spinlock, we can fix this while at
the same time removing the complexity with the pending skb
queue function. This was broken since my commit 50a9432daeec
("mac80211: fix powersaving clients races") due to removing
the clearing of WLAN_STA_PS_STA in the RX path.

While at it, fix a cleanup path issue when a station is
removed while the driver is still blocking its wakeup.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: clean up prepare_for_handlers() return value</title>
<updated>2014-01-07T15:23:24+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2014-01-07T15:23:24+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=3c2723f503e8decc420b377a3215089a7980cf08'/>
<id>urn:sha1:3c2723f503e8decc420b377a3215089a7980cf08</id>
<content type='text'>
Using an int with 0/1 is not very common, make the function
return a bool instead with the same values (false/true).

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: simplify code in ieee80211_prepare_and_rx_handle</title>
<updated>2014-01-07T15:22:15+00:00</updated>
<author>
<name>Emmanuel Grumbach</name>
<email>emmanuel.grumbach@intel.com</email>
</author>
<published>2014-01-07T11:10:20+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=40791942ec6befaad04073ed97adb8ab04ab43f3'/>
<id>urn:sha1:40791942ec6befaad04073ed97adb8ab04ab43f3</id>
<content type='text'>
No need to assign the return value of prepare_for_handlers
to a variable if the only usage is to test it.

Signed-off-by: Emmanuel Grumbach &lt;emmanuel.grumbach@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>Merge remote-tracking branch 'wireless-next/master' into mac80211-next</title>
<updated>2013-12-16T10:23:45+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2013-12-16T10:23:45+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=c4de673b775e4db48cd2db6277e0c6714332ca0c'/>
<id>urn:sha1:c4de673b775e4db48cd2db6277e0c6714332ca0c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless</title>
<updated>2013-12-06T14:50:45+00:00</updated>
<author>
<name>John W. Linville</name>
<email>linville@tuxdriver.com</email>
</author>
<published>2013-12-06T14:50:45+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=e08fd975bf26aa8063cadd245817e042f570472d'/>
<id>urn:sha1:e08fd975bf26aa8063cadd245817e042f570472d</id>
<content type='text'>
Conflicts:
	drivers/net/wireless/brcm80211/Kconfig
	net/mac80211/util.c
</content>
</entry>
<entry>
<title>mac80211: neaten ieee80211_deliver_skb</title>
<updated>2013-12-04T08:17:50+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2013-12-04T08:16:31+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=9e890a1f21c626cec3a8955814d36ea1879bdde6'/>
<id>urn:sha1:9e890a1f21c626cec3a8955814d36ea1879bdde6</id>
<content type='text'>
Remove the unnecessary duplicate test of "if (skb) {"
when !CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS.

Remove now unnecessary __maybe_unused, neaten comment
Remove unnecessary parenthesis around align cast.
Substitute reference to deprecated compare_ether_addr
with ether_addr_equal (in the comment.)

Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
[edit commit log slightly]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: move align variable to remove __maybe_unused</title>
<updated>2013-12-03T12:23:45+00:00</updated>
<author>
<name>Johannes Berg</name>
<email>johannes.berg@intel.com</email>
</author>
<published>2013-12-02T18:22:17+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=e01362265487f05b69233aab4426ab6166f7b1ec'/>
<id>urn:sha1:e01362265487f05b69233aab4426ab6166f7b1ec</id>
<content type='text'>
There's no reason for the variable to not be inside
the #ifdef, move it.

Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: use put_unaligned_le in mesh when necessary</title>
<updated>2013-11-25T19:51:55+00:00</updated>
<author>
<name>Chun-Yeow Yeoh</name>
<email>yeohchunyeow@gmail.com</email>
</author>
<published>2013-11-13T07:39:12+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=f63f8421d468575ae7bb62cfcf0398613c746975'/>
<id>urn:sha1:f63f8421d468575ae7bb62cfcf0398613c746975</id>
<content type='text'>
Use put_unaligned_le16 and put_unaligned_le32 for
mesh_path_error_tx and mesh_path_sel_frame_tx.

Signed-off-by: Chun-Yeow Yeoh &lt;yeohchunyeow@gmail.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: add generic cipher scheme support</title>
<updated>2013-11-25T19:50:52+00:00</updated>
<author>
<name>Max Stepanov</name>
<email>Max.Stepanov@intel.com</email>
</author>
<published>2013-03-24T12:23:27+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=2475b1cc0d5283a33144b79f3eba6d401d873962'/>
<id>urn:sha1:2475b1cc0d5283a33144b79f3eba6d401d873962</id>
<content type='text'>
This adds generic cipher scheme support to mac80211, such schemes
are fully under control by the driver. On hw registration drivers
may specify additional HW ciphers with a scheme how these ciphers
have to be handled by mac80211 TX/RR. A cipher scheme specifies a
cipher suite value, a size of the security header to be added to
or stripped from frames and how the PN is to be verified on RX.

Signed-off-by: Max Stepanov &lt;Max.Stepanov@intel.com&gt;
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
<entry>
<title>mac80211: do not compute offset from ssn in Rx AMPDU reordering buffer</title>
<updated>2013-11-25T19:49:36+00:00</updated>
<author>
<name>Karl Beldan</name>
<email>karl.beldan@rivierawaves.com</email>
</author>
<published>2013-10-24T13:53:32+00:00</published>
<link rel='alternate' type='text/html' href='http://mirrors.hust.edu.cn/git/lwn.git/commit/?id=2e3049b79cb98018abc83383f9b737508240dd54'/>
<id>urn:sha1:2e3049b79cb98018abc83383f9b737508240dd54</id>
<content type='text'>
Currently, frames that go into the reordering buffer are stored at
index ieee80211_sn_sub(sn, tid_rx-&gt;ssn) % tid_rx-&gt;buf_size.

The offset calculation to the starting sequence number (SSN) is
useless and just adds overhead so simply use sn % tid_rx-&gt;buf_size.

This means the reordering buffer will start to be filled somewhere
in the middle (at SSN % buf_size) and continue to get used from
there, but there's no reason to start from the beginning.

Signed-off-by: Karl Beldan &lt;karl.beldan@rivierawaves.com&gt;
[rewrite commit message]
Signed-off-by: Johannes Berg &lt;johannes.berg@intel.com&gt;
</content>
</entry>
</feed>
