Browse Source

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>
Alexander Aring 11 years ago
parent
commit
702dcf994a
1 changed files with 4 additions and 1 deletions
  1. 4 1
      net/mac802154/rx.c

+ 4 - 1
net/mac802154/rx.c

@@ -31,6 +31,8 @@
 
 
 static int mac802154_process_data(struct net_device *dev, struct sk_buff *skb)
 static int mac802154_process_data(struct net_device *dev, struct sk_buff *skb)
 {
 {
+	skb->protocol = htons(ETH_P_IEEE802154);
+
 	return netif_receive_skb(skb);
 	return netif_receive_skb(skb);
 }
 }
 
 
@@ -224,6 +226,8 @@ mac802154_monitors_rx(struct ieee802154_local *local, struct sk_buff *skb)
 	u16 crc = crc_ccitt(0, skb->data, skb->len);
 	u16 crc = crc_ccitt(0, skb->data, skb->len);
 	u8 *data;
 	u8 *data;
 
 
+	skb->protocol = htons(ETH_P_IEEE802154);
+
 	rcu_read_lock();
 	rcu_read_lock();
 	list_for_each_entry_rcu(sdata, &local->interfaces, list) {
 	list_for_each_entry_rcu(sdata, &local->interfaces, list) {
 		if (sdata->type != IEEE802154_DEV_MONITOR ||
 		if (sdata->type != IEEE802154_DEV_MONITOR ||
@@ -248,7 +252,6 @@ void ieee802154_rx(struct ieee802154_hw *hw, struct sk_buff *skb)
 
 
 	WARN_ON_ONCE(softirq_count() == 0);
 	WARN_ON_ONCE(softirq_count() == 0);
 
 
-	skb->protocol = htons(ETH_P_IEEE802154);
 	skb_reset_mac_header(skb);
 	skb_reset_mac_header(skb);
 
 
 	if (!(local->hw.flags & IEEE802154_HW_OMIT_CKSUM)) {
 	if (!(local->hw.flags & IEEE802154_HW_OMIT_CKSUM)) {