diff --git a/core/net/mac/frame802154.h b/core/net/mac/frame802154.h index 1e97a41df..fcd0ae54a 100644 --- a/core/net/mac/frame802154.h +++ b/core/net/mac/frame802154.h @@ -169,12 +169,15 @@ typedef struct { * specification for details. */ typedef struct { + /* The fields dest_addr and src_addr must come first to ensure they are aligned to the + * CPU word size. Needed as they are accessed directly as linkaddr_t*. Note we cannot use + * the type linkaddr_t directly here, as we always need 8 bytes, not LINKADDR_SIZE bytes. */ + uint8_t dest_addr[8]; /**< Destination address */ + uint8_t src_addr[8]; /**< Source address */ frame802154_fcf_t fcf; /**< Frame control field */ uint8_t seq; /**< Sequence number */ uint16_t dest_pid; /**< Destination PAN ID */ - uint8_t dest_addr[8]; /**< Destination address */ uint16_t src_pid; /**< Source PAN ID */ - uint8_t src_addr[8]; /**< Source address */ frame802154_aux_hdr_t aux_hdr; /**< Aux security header */ uint8_t *payload; /**< Pointer to 802.15.4 payload */ int payload_len; /**< Length of payload field */