On Thu, Apr 28, 2005 at 11:30:02AM -0700, 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 :-) >
There seems to be a reason that a function like m_adj() and ETHER_ALIGN exists. -- :wq Claudio _______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "[EMAIL PROTECTED]"