• M
    batman-adv: always assume 2-byte packet alignment · a163dc22
    Matthias Schiffer 提交于
    NIC drivers generally try to ensure that the "network header" is aligned
    to a 4-byte boundary. This is not always possible: When Ethernet frames are
    encapsulated in other packets with 4-byte aligned headers, the inner
    Ethernet header will have 4-byte alignment, and in consequence, the inner
    network header is aligned to 2, but not to 4 bytes.
    
    Most parts of batman-adv only care about 2-byte alignment; in particular,
    no unaligned accesses occur in performance-critical paths that handle
    actual payload data. This is not true for OGM handling: the seqno and crc
    fields are accessed as 32-bit values. To avoid these unaligned accesses,
    this patch reduces the expected packet alignment to 2 bytes for all of
    batadv's packet types.
    
    As no unaligned accesses existed on the performance-critical paths anyways,
    this chance does have any (positive or negative) effect on performance, but
    it still makes sense to avoid these accesses to prevent log noise when
    examining other unaligned accesses in the kernel while batman-adv is
    active.
    Signed-off-by: NMatthias Schiffer <mschiffer@universe-factory.net>
    Signed-off-by: NSven Eckelmann <sven@narfation.org>
    Signed-off-by: NSimon Wunderlich <sw@simonwunderlich.de>
    a163dc22
batadv_packet.h 20.0 KB