From: Alexander Aring <alex.aring@gmail.com>
Date: Fri, 21 Feb 2014 19:58:58 +0100
+ err = lowpan_fragment_xmit(skb, head, header_length,
+ frag_plen + lowpan_size, 0,
+ LOWPAN_DISPATCH_FRAG1);
if (err) {
pr_debug("%s unable to send FRAG1 packet (tag: %d)",
__func__, tag);
goto exit;
}
- offset = LOWPAN_FRAG_SIZE;
+ offset = lowpan_size + frag_plen;
+ dgram_offset = mac_cb(skb)->frag_info.d_offset + frag_plen;
This isn't going to work.
Once you call dev_queue_xmit(), the skb control block can be reused by
other layers. In particular the device qdisc layer is going to
scramble the control block on you.
Once a packet travels from one layer to another, SKB control block
is likewise transferred.