mac80211: support reporting A-MSDU subframes individually
authorMichal Kazior <michal.kazior@tieto.com>
Mon, 23 Sep 2013 13:34:38 +0000 (15:34 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 1 Oct 2013 10:22:03 +0000 (12:22 +0200)
commit0cfcefef1945c6d3f24bce1c22937cfeae07eae8
tree9fc8c7953e38b65832f831114df5fc0df7b83d97
parent15e230abaaa5a79feb25d1ef29b380e8b63aea0c
mac80211: support reporting A-MSDU subframes individually

Some devices may not be able to report A-MSDUs in
single buffers. Drivers for such devices were
forced to re-assemble A-MSDUs which would then
be eventually disassembled by mac80211. This could
lead to CPU cache thrashing and poor performance.

Since A-MSDU has a single sequence number all
subframes share it. This was in conflict with
retransmission/duplication recovery
(IEEE802.11-2012: 9.3.2.10).

Patch introduces a new flag that is meant to be
set for all individually reported A-MSDU subframes
except the last one. This ensures the
last_seq_ctrl is updated after the last subframe
is processed. If an A-MSDU is actually a duplicate
transmission all reported subframes will be
properly discarded.

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
[johannes: add braces that were missing even before]
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/mac80211.h
net/mac80211/rx.c