Re: if_tap unaligned access problem

From: Claudio Jeker (cjeker_at_diehard.n-r-g.com)
Date: 04/28/05

  • Next message: Claudio Jeker: "Re: if_tap unaligned access problem"
    Date: Thu, 28 Apr 2005 22:58:45 +0159
    To: freebsd-net@freebsd.org, net@freebsd.org
    
    

    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 "freebsd-net-unsubscribe@freebsd.org"
    

  • Next message: Claudio Jeker: "Re: if_tap unaligned access problem"