Merge pull request #17157 from maribu/sys/net/gnrc
sys/net/gnrc: fix compilation with -Wcast-align
This commit is contained in:
commit
2cf0fca4e2
@ -22,7 +22,9 @@
|
|||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
#include <stdalign.h>
|
||||||
|
|
||||||
|
#include "architecture.h"
|
||||||
#include "net/gnrc/netif/hdr.h"
|
#include "net/gnrc/netif/hdr.h"
|
||||||
#include "net/gnrc/pkt.h"
|
#include "net/gnrc/pkt.h"
|
||||||
#ifdef MODULE_GNRC_SIXLOWPAN_FRAG_SFR
|
#ifdef MODULE_GNRC_SIXLOWPAN_FRAG_SFR
|
||||||
@ -99,13 +101,14 @@ typedef struct {
|
|||||||
* @brief The reassembled packet in the packet buffer
|
* @brief The reassembled packet in the packet buffer
|
||||||
*/
|
*/
|
||||||
gnrc_pktsnip_t *pkt;
|
gnrc_pktsnip_t *pkt;
|
||||||
#if IS_USED(MODULE_GNRC_SIXLOWPAN_FRAG_SFR)
|
#if IS_USED(MODULE_GNRC_SIXLOWPAN_FRAG_SFR) || defined(DOXYGEN)
|
||||||
/**
|
/**
|
||||||
* @brief Bitmap for received fragments
|
* @brief Bitmap for received fragments
|
||||||
*
|
*
|
||||||
* @note Only available with module `gnrc_sixlowpan_frag_sfr` compiled
|
* @note Only available with module `gnrc_sixlowpan_frag_sfr` compiled
|
||||||
* in.
|
* in.
|
||||||
*/
|
*/
|
||||||
|
alignas(gnrc_sixlowpan_frag_sfr_bitmap_t)
|
||||||
BITFIELD(received, SIXLOWPAN_SFR_ACK_BITMAP_SIZE);
|
BITFIELD(received, SIXLOWPAN_SFR_ACK_BITMAP_SIZE);
|
||||||
int8_t offset_diff; /**< offset change due to
|
int8_t offset_diff; /**< offset change due to
|
||||||
* recompression */
|
* recompression */
|
||||||
|
|||||||
@ -13,6 +13,8 @@
|
|||||||
* @author Martine Lenders <m.lenders@fu-berlin.de>
|
* @author Martine Lenders <m.lenders@fu-berlin.de>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
#include "irq.h"
|
#include "irq.h"
|
||||||
#include "kernel_defines.h"
|
#include "kernel_defines.h"
|
||||||
#ifdef MODULE_GNRC_IPV6_NIB
|
#ifdef MODULE_GNRC_IPV6_NIB
|
||||||
@ -106,7 +108,7 @@ static gnrc_sixlowpan_frag_sfr_stats_t _stats;
|
|||||||
*
|
*
|
||||||
* @return A gnrc_sixlowpan_frag_sfr_bitmap_t.
|
* @return A gnrc_sixlowpan_frag_sfr_bitmap_t.
|
||||||
*/
|
*/
|
||||||
static inline gnrc_sixlowpan_frag_sfr_bitmap_t *_to_bitmap(uint8_t *bitmap);
|
static inline gnrc_sixlowpan_frag_sfr_bitmap_t *_get_bitmap(gnrc_sixlowpan_frag_rb_t *frag_rb);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Checks if fragment represented by a fragment descriptor requested an
|
* @brief Checks if fragment represented by a fragment descriptor requested an
|
||||||
@ -927,7 +929,7 @@ static void _try_reassembly(gnrc_netif_hdr_t *netif_hdr,
|
|||||||
entry->entry.rb->received[3],
|
entry->entry.rb->received[3],
|
||||||
entry->entry.base->current_size,
|
entry->entry.base->current_size,
|
||||||
entry->entry.base->datagram_size);
|
entry->entry.base->datagram_size);
|
||||||
bitmap = _to_bitmap(entry->entry.rb->received);
|
bitmap = _get_bitmap(entry->entry.rb);
|
||||||
if (IS_USED(MODULE_GNRC_SIXLOWPAN_FRAG_SFR_STATS)) {
|
if (IS_USED(MODULE_GNRC_SIXLOWPAN_FRAG_SFR_STATS)) {
|
||||||
_stats.acks.partly++;
|
_stats.acks.partly++;
|
||||||
}
|
}
|
||||||
@ -1209,9 +1211,14 @@ static void _check_failed_frags(sixlowpan_sfr_ack_t *ack,
|
|||||||
|
|
||||||
/* ====== INTERNAL FUNCTIONS USED BY PUBLIC FUNCTIONS ======
|
/* ====== INTERNAL FUNCTIONS USED BY PUBLIC FUNCTIONS ======
|
||||||
* ====== AND TO MANIPULATE INTERNAL DATA STRUCTURES ====== */
|
* ====== AND TO MANIPULATE INTERNAL DATA STRUCTURES ====== */
|
||||||
static inline gnrc_sixlowpan_frag_sfr_bitmap_t *_to_bitmap(uint8_t *bitmap)
|
static inline gnrc_sixlowpan_frag_sfr_bitmap_t *_get_bitmap(gnrc_sixlowpan_frag_rb_t *frag_rb)
|
||||||
{
|
{
|
||||||
return (gnrc_sixlowpan_frag_sfr_bitmap_t *)bitmap;
|
DECLARE_CONSTANT(is_aligned,
|
||||||
|
HAS_ALIGNMENT_OF(offsetof(gnrc_sixlowpan_frag_rb_t, received),
|
||||||
|
alignof(gnrc_sixlowpan_frag_sfr_bitmap_t)))
|
||||||
|
static_assert(is_aligned,
|
||||||
|
"gnrc_sixlowpan_frag_rb_t::received must be suitably aligned");
|
||||||
|
return (gnrc_sixlowpan_frag_sfr_bitmap_t *)(uintptr_t)frag_rb->received;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool _frag_ack_req(_frag_desc_t *frag)
|
static inline bool _frag_ack_req(_frag_desc_t *frag)
|
||||||
@ -1394,7 +1401,7 @@ static int _resend_frag(clist_node_t *node, void *fbuf_ptr)
|
|||||||
cur_frag_size = _find_offset_and_copy_rest(data, &pkt, frag_size,
|
cur_frag_size = _find_offset_and_copy_rest(data, &pkt, frag_size,
|
||||||
frag_desc->offset);
|
frag_desc->offset);
|
||||||
/* copy remaining packet snips */
|
/* copy remaining packet snips */
|
||||||
cur_frag_size = _copy_pkt_to_frag(data, pkt, frag_size, cur_frag_size);
|
_copy_pkt_to_frag(data, pkt, frag_size, cur_frag_size);
|
||||||
DEBUG("6lo sfr: resending fragment (retry: %u, tag: %u, X: %i, seq: %u, "
|
DEBUG("6lo sfr: resending fragment (retry: %u, tag: %u, X: %i, seq: %u, "
|
||||||
"frag_size: %u, %s: %u)\n", frag_desc->retries,
|
"frag_size: %u, %s: %u)\n", frag_desc->retries,
|
||||||
hdr->base.tag, sixlowpan_sfr_rfrag_ack_req(hdr),
|
hdr->base.tag, sixlowpan_sfr_rfrag_ack_req(hdr),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user