diff --git a/sys/include/net/gnrc/sixlowpan/frag.h b/sys/include/net/gnrc/sixlowpan/frag.h index 1e5a81ab0de2..ff6a7c4987a3 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 8b94a263113f..7f5cd220b2c9 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 f19f8441c359..339cbda80531 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 */