diff options
author | Alexander Aring <alex.aring@gmail.com> | 2014-10-27 12:13:35 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2014-10-27 13:07:43 -0400 |
commit | 702dcf994a0f0c467aae4b65885833a114126387 (patch) | |
tree | 344d289f803f5013081298063826d170a802528b /net/mac802154 | |
parent | 469100d6c2ff22cd1f50672ac6d09a1633334489 (diff) |
mac802154: rx: move skb->protocol setting
This patch moves the skb->protocol setting to the position when it's
needed. It's only needed when frame parsing was successful.
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/mac802154')
-rw-r--r-- | net/mac802154/rx.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/net/mac802154/rx.c b/net/mac802154/rx.c index 246a60e8f76a..c4066b5006f1 100644 --- a/net/mac802154/rx.c +++ b/net/mac802154/rx.c | |||
@@ -31,6 +31,8 @@ | |||
31 | 31 | ||
32 | static int mac802154_process_data(struct net_device *dev, struct sk_buff *skb) | 32 | static int mac802154_process_data(struct net_device *dev, struct sk_buff *skb) |
33 | { | 33 | { |
34 | skb->protocol = htons(ETH_P_IEEE802154); | ||
35 | |||
34 | return netif_receive_skb(skb); | 36 | return netif_receive_skb(skb); |
35 | } | 37 | } |
36 | 38 | ||
@@ -224,6 +226,8 @@ mac802154_monitors_rx(struct ieee802154_local *local, struct sk_buff *skb) | |||
224 | u16 crc = crc_ccitt(0, skb->data, skb->len); | 226 | u16 crc = crc_ccitt(0, skb->data, skb->len); |
225 | u8 *data; | 227 | u8 *data; |
226 | 228 | ||
229 | skb->protocol = htons(ETH_P_IEEE802154); | ||
230 | |||
227 | rcu_read_lock(); | 231 | rcu_read_lock(); |
228 | list_for_each_entry_rcu(sdata, &local->interfaces, list) { | 232 | list_for_each_entry_rcu(sdata, &local->interfaces, list) { |
229 | if (sdata->type != IEEE802154_DEV_MONITOR || | 233 | if (sdata->type != IEEE802154_DEV_MONITOR || |
@@ -248,7 +252,6 @@ void ieee802154_rx(struct ieee802154_hw *hw, struct sk_buff *skb) | |||
248 | 252 | ||
249 | WARN_ON_ONCE(softirq_count() == 0); | 253 | WARN_ON_ONCE(softirq_count() == 0); |
250 | 254 | ||
251 | skb->protocol = htons(ETH_P_IEEE802154); | ||
252 | skb_reset_mac_header(skb); | 255 | skb_reset_mac_header(skb); |
253 | 256 | ||
254 | if (!(local->hw.flags & IEEE802154_HW_OMIT_CKSUM)) { | 257 | if (!(local->hw.flags & IEEE802154_HW_OMIT_CKSUM)) { |