mac802154: rx: move skb_reset_mac_header
authorAlexander Aring <alex.aring@gmail.com>
Mon, 27 Oct 2014 16:13:38 +0000 (17:13 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Mon, 27 Oct 2014 17:07:45 +0000 (18:07 +0100)
This patch moves the skb_reset_mac_header call before frame parsing
while wpan rx and before monitor deliver functionality.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/mac802154/rx.c

index f7f09b4..c299980 100644 (file)
@@ -138,6 +138,8 @@ static int mac802154_parse_frame_start(struct sk_buff *skb,
        int hlen;
        struct ieee802154_mac_cb *cb = mac_cb_init(skb);
 
+       skb_reset_mac_header(skb);
+
        hlen = ieee802154_hdr_pull(skb, hdr);
        if (hlen < 0)
                return -EINVAL;
@@ -227,6 +229,7 @@ mac802154_monitors_rx(struct ieee802154_local *local, struct sk_buff *skb)
        u16 crc = crc_ccitt(0, skb->data, skb->len);
        u8 *data;
 
+       skb_reset_mac_header(skb);
        skb->ip_summed = CHECKSUM_UNNECESSARY;
        skb->pkt_type = PACKET_OTHERHOST;
        skb->protocol = htons(ETH_P_IEEE802154);
@@ -255,8 +258,6 @@ void ieee802154_rx(struct ieee802154_hw *hw, struct sk_buff *skb)
 
        WARN_ON_ONCE(softirq_count() == 0);
 
-       skb_reset_mac_header(skb);
-
        if (!(local->hw.flags & IEEE802154_HW_OMIT_CKSUM)) {
                u16 crc;