diff options
author | Helmut Schaa <helmut.schaa@googlemail.com> | 2012-12-05 14:36:12 +0100 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-12-05 16:54:59 +0100 |
commit | 751413eadc8f0c7691a6cbd40a913ef0ae6b2ce4 (patch) | |
tree | 480ad2d1fc32394eb1db576e768f1044e2f9392f /net | |
parent | ab9d6e4ffe192427ce9e93d4f927b0faaa8a941e (diff) | |
download | op-kernel-dev-751413eadc8f0c7691a6cbd40a913ef0ae6b2ce4.zip op-kernel-dev-751413eadc8f0c7691a6cbd40a913ef0ae6b2ce4.tar.gz |
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>
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/rx.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index db343fa..e4ee327 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; |