From 4b8881abb499f280f630b6a95f17170d4417c1de Mon Sep 17 00:00:00 2001 From: Marian Buschsieweke <marian.buschsieweke@ovgu.de> Date: Mon, 14 May 2018 14:01:29 +0200 Subject: [PATCH] gnrc/netif/hdr.h: Optimized structure layout Reordered struct members to not waste memory due to padding. Before: ``` C typedef struct { uint8_t src_l2addr_len; uint8_t dst_l2addr_len; kernel_pid_t if_pid; // <-- 16 bit, is aligned to 16 bit uint8_t flags; uint8_t __padding_byte; // <-- Inserted to fulfill padding requirements int16_t rssi; // <-- 16 bit, is NOT aligned to 16 bit uint8_t lqi; uint8_t __padding_byte2;// <-- Inserted to fulfill padding requirements } gnrc_netif_hdr_t; ``` Now: ``` C typedef struct { uint8_t src_l2addr_len; uint8_t dst_l2addr_len; kernel_pid_t if_pid; // <-- 16 bit, is aligned to 16 bit uint8_t flags; uint8_t lqi; int16_t rssi; // <-- 16 bit, is aligned to 16 bit } gnrc_netif_hdr_t; ``` When build for the `bluepill` board, the new layout reduces the size by 2 bytes. --- sys/include/net/gnrc/netif/hdr.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sys/include/net/gnrc/netif/hdr.h b/sys/include/net/gnrc/netif/hdr.h index b4ab577f97..3e6aef7eaa 100644 --- a/sys/include/net/gnrc/netif/hdr.h +++ b/sys/include/net/gnrc/netif/hdr.h @@ -85,8 +85,8 @@ typedef struct { uint8_t dst_l2addr_len; /**< length of l2 destination address in byte */ kernel_pid_t if_pid; /**< PID of network interface */ uint8_t flags; /**< flags as defined above */ - int16_t rssi; /**< rssi of received packet in dBm (optional) */ uint8_t lqi; /**< lqi of received packet (optional) */ + int16_t rssi; /**< rssi of received packet in dBm (optional) */ } gnrc_netif_hdr_t; /** -- GitLab