Re: [B.A.T.M.A.N.] [PATCH RFC] batman-adv: always assume 2-byte packet alignment

Sven Eckelmann
2018-03-05T06:32:35Z

[-- Attachment #1: Type: text/plain, Size: 1538 bytes --]

On Mittwoch, 24. Januar 2018 12:21:37 CET Matthias Schiffer wrote:
> 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: Matthias Schiffer <mschiffer@universe-factory.net>
> ---
> include/uapi/linux/batadv_packet.h | 13 ++-----------
> 1 file changed, 2 insertions(+), 11 deletions(-)

As discussed earlier, this was applied as 0509fc0c128b [1] after David Miller
pulled it in net-next.

Kind regards,
Sven

[1] https://git.open-mesh.org/batman-adv.git/commit/0509fc0c128ba2891770305c57c9b6a3a61ea7bd