diff --git a/sys/net/network_layer/ng_sixlowpan/iphc/ng_sixlowpan_iphc.c b/sys/net/network_layer/ng_sixlowpan/iphc/ng_sixlowpan_iphc.c
index 24867c77d1054599ed3921e95eba5a2a9ca33501..eb29da9a89b2d766404b68ae1cad5163e7cc70e4 100644
--- a/sys/net/network_layer/ng_sixlowpan/iphc/ng_sixlowpan_iphc.c
+++ b/sys/net/network_layer/ng_sixlowpan/iphc/ng_sixlowpan_iphc.c
@@ -372,6 +372,10 @@ bool ng_sixlowpan_iphc_decode(ng_pktsnip_t *pkt)
     payload = ng_pktbuf_add(pkt, pkt->data, payload_offset, NG_NETTYPE_SIXLOWPAN);
     pkt = ng_pktbuf_remove_snip(pkt, payload);
 
+    /* set IPv6 header payload length field to the length of whatever is left
+     * after removing the 6LoWPAN header */
+    ipv6_hdr->len = byteorder_htons(pkt->size);
+
     /* insert IPv6 header */
     ipv6->next = pkt->next;
     pkt->next = ipv6;