diff --git a/sys/include/net/gnrc/sixlowpan/frag.h b/sys/include/net/gnrc/sixlowpan/frag.h
index 1e5a81ab0de288bc60d97c71784209a7a463b430..ff6a7c4987a35f21344bbf71ac3aa974659a6e92 100644
--- a/sys/include/net/gnrc/sixlowpan/frag.h
+++ b/sys/include/net/gnrc/sixlowpan/frag.h
@@ -89,10 +89,9 @@ typedef struct {
  */
 typedef struct {
     gnrc_pktsnip_t *pkt;    /**< Pointer to the IPv6 packet to be fragmented */
-    size_t datagram_size;   /**< Length of just the (uncompressed) IPv6 packet to be fragmented */
+    uint16_t datagram_size; /**< Length of just the (uncompressed) IPv6 packet to be fragmented */
     uint16_t offset;        /**< Offset of the Nth fragment from the beginning of the
                              *   payload datagram */
-    kernel_pid_t pid;       /**< PID of the interface */
 } gnrc_sixlowpan_msg_frag_t;
 
 /**
diff --git a/sys/net/gnrc/network_layer/sixlowpan/frag/gnrc_sixlowpan_frag.c b/sys/net/gnrc/network_layer/sixlowpan/frag/gnrc_sixlowpan_frag.c
index 8b94a263113f2a4d1202438a7fdfb33dc62c49ba..7f5cd220b2c9849a6cb35577df82ee334d0adc59 100644
--- a/sys/net/gnrc/network_layer/sixlowpan/frag/gnrc_sixlowpan_frag.c
+++ b/sys/net/gnrc/network_layer/sixlowpan/frag/gnrc_sixlowpan_frag.c
@@ -31,9 +31,7 @@
 #define ENABLE_DEBUG    (0)
 #include "debug.h"
 
-static gnrc_sixlowpan_msg_frag_t _fragment_msg = {
-        NULL, 0, 0, KERNEL_PID_UNDEF
-    };
+static gnrc_sixlowpan_msg_frag_t _fragment_msg;
 
 #if ENABLE_DEBUG
 /* For PRIu16 etc. */
@@ -238,7 +236,7 @@ void gnrc_sixlowpan_frag_send(gnrc_pktsnip_t *pkt, void *ctx, unsigned page)
 {
     assert(ctx != NULL);
     gnrc_sixlowpan_msg_frag_t *fragment_msg = ctx;
-    gnrc_netif_t *iface = gnrc_netif_get_by_pid(fragment_msg->pid);
+    gnrc_netif_t *iface;
     uint16_t res;
     /* payload_len: actual size of the packet vs
      * datagram_size: size of the uncompressed IPv6 packet */
@@ -248,6 +246,7 @@ void gnrc_sixlowpan_frag_send(gnrc_pktsnip_t *pkt, void *ctx, unsigned page)
     assert((fragment_msg->pkt == pkt) || (pkt == NULL));
     (void)page;
     (void)pkt;
+    iface = gnrc_netif_hdr_get_netif(fragment_msg->pkt->data);
 #if defined(DEVELHELP) && ENABLE_DEBUG
     if (iface == NULL) {
         DEBUG("6lo frag: iface == NULL, expect segmentation fault.\n");
diff --git a/sys/net/gnrc/network_layer/sixlowpan/gnrc_sixlowpan.c b/sys/net/gnrc/network_layer/sixlowpan/gnrc_sixlowpan.c
index f19f8441c359de0685b51c2dd7654b7b66b9190f..339cbda80531d35e7e751128e2ce1cacc1d0d5c1 100644
--- a/sys/net/gnrc/network_layer/sixlowpan/gnrc_sixlowpan.c
+++ b/sys/net/gnrc/network_layer/sixlowpan/gnrc_sixlowpan.c
@@ -129,7 +129,6 @@ void gnrc_sixlowpan_multiplex_by_size(gnrc_pktsnip_t *pkt,
             gnrc_pktbuf_release_error(pkt, ENOMEM);
             return;
         }
-        fragment_msg->pid = netif->pid;
         fragment_msg->pkt = pkt;
         fragment_msg->datagram_size = orig_datagram_size;
         /* Sending the first fragment has an offset==0 */