On Thu, 28 Apr 2005, Sam Leffler wrote:
Julian Elischer wrote:
Maksim Yevmenkin wrote:
Hello,
A quick question about if_tap, the tapwrite function
( which copies an ethernet frame into an mbuf using uiotombuf )
is broken on alpha and sparc64.
The 14 byte ethernet header causes the rest of the frame to
be misaligned on 4 byte boundaries. This causes crashes in
various other parts of the kernel. The solution would be to
shift the mbuf by two bytes, but I am not quite sure where
this should happen.
i think we have few options here:
1) revert back original tapwrite function that was changed in v. 1.48 and
set offset to 2 bytes in top mbuf
2) change current version of tapwrite so it would m_prepend and m_pullup
mbuf after m_uiotombuf
3) change m_uiotombuf to accept one more parameter - mbuf offset at which
data should be copied. there are not that many users of m_uiotombuf
/sys/kern/uipc_syscalls.c
/sys/net/if_tap.c
/sys/net/if_tun.c
/sys/netgraph/ng_device.c
I think we should defien a MAC header that looks like:
char dummy[2]
char dest[6]
char src[6]
char type_len[2]
and make ether net cards start writing 2 bytes into the buffer :-)
The whole alignment thing is currently handled quite poorly. For example,
are frequently aligning to the front of a cluster for ethernet receives which
means that frames bridged to a non-802.3 device often have to prepend an mbuf
because there's not enough space for their larger header. We need to fix the
alignment on receive based on multiple considerations and not just ip
alignment. There's a similar can-of-worms on the tx side that's a bit more
involved.
Dealing with rx-side alignment is getting high on my todo list but various
other problems keep cropping up.
I could try to port the changes netbsd made using m_copyup and
send you the resulting patchfile. IPv4 has already been serviced by
John-Mark Gurney in perforce.
Would that help getting this into the tree ?
http://mail-index.netbsd.org/source-changes/2002/07/01/0001.html
http://perforce.freebsd.org/fileDiffView.cgi?FSPC=//depot/user/jmg/arm/src/s
ys/netinet/ip%5finput.c&REV=3&ACT=edit
--
Sten Spans
"There is a crack in everything, that's how the light gets in."
Leonard Cohen - Anthem
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"