Revert m_defrag() mbuf alignment to IP header.
authorbluhm <bluhm@openbsd.org>
Tue, 5 Mar 2024 18:52:41 +0000 (18:52 +0000)
committerbluhm <bluhm@openbsd.org>
Tue, 5 Mar 2024 18:52:41 +0000 (18:52 +0000)
commit0bf85d46449c6edd26eacbda80548e2daddd7516
tree48641a3c7d6876a1901e799413eece9a917973fe
parent9999d3c6d93e90c732a205fd031a3f0a4c2294c0
Revert m_defrag() mbuf alignment to IP header.

m_defrag() is intended as last resort to make DMA transfers to the
hardware.  Therefore page alingment is more important than IP header
alignment.  The reason, why the mbuf returned by m_defrag() was
switched to IP header alingment, was that ether_extract_headers()
failed in em(4) driver with TSO on sparc64.  This has been fixed
by using memcpy().

The alignment change in m_defrag() is too late in the 7.5 relaese
process.  It may affect several drivers on different architectures.
Bus dmamap for ixl(4) on sun4v expects page alignment.  Such alignment
issues and TSO mbuf mapping for IOMMU need more thought.

OK deraadt@
sys/kern/uipc_mbuf.c