On Sat, Feb 13, 2021 at 07:28:05AM +0000, Roy Marples wrote:
Module Name: src
Committed By: roy
Date: Sat Feb 13 07:28:05 UTC 2021
Modified Files:
src/sys/net: if_ether.h if_ethersubr.c
Log Message:
if_ether: Ensure that ether_header is aligned
To generate a diff of this commit:
cvs rdiff -u -r1.84 -r1.85 src/sys/net/if_ether.h
cvs rdiff -u -r1.289 -r1.290 src/sys/net/if_ethersubr.c
This appears to ensure the Ethernet header is naturally aligned on a
32-bit boundary. The 16-bit ether_type field is the only thing in
ether_header that is wider than a uint8_t.
Many drivers will place the start of the receive buffer at an
ETHER_ALIGN (which is 2) offset to ensure the layer three header
is 32-bit aligned after the 14-byte Ethernet header. Thus this
will result in always calling m_copyup() in ether_input() on strict
alignment platforms.