From: Helmut Schaa Date: Wed, 5 Dec 2012 13:36:12 +0000 (+0100) Subject: mac80211: skip radiotap space calculation if no monitor exists X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=751413eadc8f0c7691a6cbd40a913ef0ae6b2ce4;p=openwrt%2Fstaging%2Fblogic.git 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 Signed-off-by: Johannes Berg --- 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;