diff options
author | Alexander Aring <alex.aring@gmail.com> | 2014-10-27 12:13:38 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2014-10-27 13:07:45 -0400 |
commit | 9cf215d0733256687796ef1161b7b358be1b0602 (patch) | |
tree | 8d0637932c1aa4d89296d69a0ce2ff49ad870119 /net/mac802154 | |
parent | c9ca6401405ea0c197ab7c8bcab2b82b26678145 (diff) |
mac802154: rx: move skb_reset_mac_header
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>
Diffstat (limited to 'net/mac802154')
-rw-r--r-- | net/mac802154/rx.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/mac802154/rx.c b/net/mac802154/rx.c index f7f09b46faa4..c2999804126a 100644 --- a/net/mac802154/rx.c +++ b/net/mac802154/rx.c | |||
@@ -138,6 +138,8 @@ static int mac802154_parse_frame_start(struct sk_buff *skb, | |||
138 | int hlen; | 138 | int hlen; |
139 | struct ieee802154_mac_cb *cb = mac_cb_init(skb); | 139 | struct ieee802154_mac_cb *cb = mac_cb_init(skb); |
140 | 140 | ||
141 | skb_reset_mac_header(skb); | ||
142 | |||
141 | hlen = ieee802154_hdr_pull(skb, hdr); | 143 | hlen = ieee802154_hdr_pull(skb, hdr); |
142 | if (hlen < 0) | 144 | if (hlen < 0) |
143 | return -EINVAL; | 145 | return -EINVAL; |
@@ -227,6 +229,7 @@ mac802154_monitors_rx(struct ieee802154_local *local, struct sk_buff *skb) | |||
227 | u16 crc = crc_ccitt(0, skb->data, skb->len); | 229 | u16 crc = crc_ccitt(0, skb->data, skb->len); |
228 | u8 *data; | 230 | u8 *data; |
229 | 231 | ||
232 | skb_reset_mac_header(skb); | ||
230 | skb->ip_summed = CHECKSUM_UNNECESSARY; | 233 | skb->ip_summed = CHECKSUM_UNNECESSARY; |
231 | skb->pkt_type = PACKET_OTHERHOST; | 234 | skb->pkt_type = PACKET_OTHERHOST; |
232 | skb->protocol = htons(ETH_P_IEEE802154); | 235 | skb->protocol = htons(ETH_P_IEEE802154); |
@@ -255,8 +258,6 @@ void ieee802154_rx(struct ieee802154_hw *hw, struct sk_buff *skb) | |||
255 | 258 | ||
256 | WARN_ON_ONCE(softirq_count() == 0); | 259 | WARN_ON_ONCE(softirq_count() == 0); |
257 | 260 | ||
258 | skb_reset_mac_header(skb); | ||
259 | |||
260 | if (!(local->hw.flags & IEEE802154_HW_OMIT_CKSUM)) { | 261 | if (!(local->hw.flags & IEEE802154_HW_OMIT_CKSUM)) { |
261 | u16 crc; | 262 | u16 crc; |
262 | 263 | ||