summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHelmut Schaa <helmut.schaa@googlemail.com>2012-12-05 14:36:12 +0100
committerJohannes Berg <johannes.berg@intel.com>2012-12-05 16:54:59 +0100
commit751413eadc8f0c7691a6cbd40a913ef0ae6b2ce4 (patch)
tree480ad2d1fc32394eb1db576e768f1044e2f9392f
parentab9d6e4ffe192427ce9e93d4f927b0faaa8a941e (diff)
downloadlinux-751413eadc8f0c7691a6cbd40a913ef0ae6b2ce4.tar.gz
linux-751413eadc8f0c7691a6cbd40a913ef0ae6b2ce4.tar.bz2
linux-751413eadc8f0c7691a6cbd40a913ef0ae6b2ce4.zip
mac80211: skip radiotap space calculation if no monitor exists
The radiotap header length "needed_headroom" is only required if we're sending the skb to a monitor interface. Hence, move the calculation a bit later so the calculation can be skipped if no monitor interface is present. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/mac80211/rx.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index db343fa8033c..e4ee32748994 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -378,9 +378,6 @@ ieee80211_rx_monitor(struct ieee80211_local *local, struct sk_buff *origskb,
* the SKB because it has a bad FCS/PLCP checksum.
*/
- /* room for the radiotap header based on driver features */
- needed_headroom = ieee80211_rx_radiotap_space(local, status);
-
if (local->hw.flags & IEEE80211_HW_RX_INCLUDES_FCS)
present_fcs_len = FCS_LEN;
@@ -399,6 +396,9 @@ ieee80211_rx_monitor(struct ieee80211_local *local, struct sk_buff *origskb,
return remove_monitor_info(local, origskb);
}
+ /* room for the radiotap header based on driver features */
+ needed_headroom = ieee80211_rx_radiotap_space(local, status);
+
if (should_drop_frame(origskb, present_fcs_len)) {
/* only need to expand headroom if necessary */
skb = origskb;