OSDN Git Service

6lowpan: add debug messages for 6LoWPAN fragmentation
authorTony Cheneau <tony.cheneau@amnesiak.org>
Mon, 25 Mar 2013 17:59:27 +0000 (17:59 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 Mar 2013 16:37:57 +0000 (12:37 -0400)
Add pr_debug() call in order to debug 6LoWPAN fragmentation and
reassembly.

Signed-off-by: Tony Cheneau <tony.cheneau@amnesiak.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ieee802154/6lowpan.c

index 4a62289..61eee9d 100644 (file)
@@ -742,10 +742,16 @@ lowpan_process_data(struct sk_buff *skb)
                /* adds the 3 MSB to the 8 LSB to retrieve the 11 bits length */
                len = ((iphc0 & 7) << 8) | slen;
 
-               /* FRAGN */
-               if ((iphc0 & LOWPAN_DISPATCH_MASK) != LOWPAN_DISPATCH_FRAG1) {
+               if ((iphc0 & LOWPAN_DISPATCH_MASK) == LOWPAN_DISPATCH_FRAG1) {
+                       pr_debug("%s received a FRAG1 packet (tag: %d, "
+                                "size of the entire IP packet: %d)",
+                                __func__, tag, len);
+               } else { /* FRAGN */
                        if (lowpan_fetch_skb_u8(skb, &offset))
                                goto unlock_and_drop;
+                       pr_debug("%s received a FRAGN packet (tag: %d, "
+                                "size of the entire IP packet: %d, "
+                                "offset: %d)", __func__, tag, len, offset * 8);
                }
 
                /*
@@ -762,6 +768,8 @@ lowpan_process_data(struct sk_buff *skb)
 
                /* alloc new frame structure */
                if (!found) {
+                       pr_debug("%s first fragment received for tag %d, "
+                                "begin packet reassembly", __func__, tag);
                        frame = lowpan_alloc_new_frame(skb, len, tag);
                        if (!frame)
                                goto unlock_and_drop;
@@ -784,6 +792,9 @@ lowpan_process_data(struct sk_buff *skb)
                        list_del(&frame->list);
                        spin_unlock_bh(&flist_lock);
 
+                       pr_debug("%s successfully reassembled fragment "
+                                "(tag %d)", __func__, tag);
+
                        dev_kfree_skb(skb);
                        skb = frame->skb;
                        kfree(frame);
@@ -1034,8 +1045,11 @@ lowpan_skb_fragmentation(struct sk_buff *skb)
        err = lowpan_fragment_xmit(skb, head, header_length, LOWPAN_FRAG_SIZE,
                                   0, LOWPAN_DISPATCH_FRAG1);
 
-       if (err)
+       if (err) {
+               pr_debug("%s unable to send FRAG1 packet (tag: %d)",
+                        __func__, tag);
                goto exit;
+       }
 
        offset = LOWPAN_FRAG_SIZE;
 
@@ -1053,8 +1067,11 @@ lowpan_skb_fragmentation(struct sk_buff *skb)
 
                err = lowpan_fragment_xmit(skb, head, header_length,
                                           len, offset, LOWPAN_DISPATCH_FRAGN);
-               if (err)
+               if (err) {
+                       pr_debug("%s unable to send a subsequent FRAGN packet "
+                                "(tag: %d, offset: %d", __func__, tag, offset);
                        goto exit;
+               }
 
                offset += len;
        }