Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Mar 2000 13:29:17 -0800
From:      "Sam Leffler" <sam@errno.com>
To:        "Bakul Shah" <bakul@torrentnet.com>
Cc:        <freebsd-net@FreeBSD.ORG>, "C. Stephen Gunn" <csg@waterspout.com>
Subject:   Re: Trimming ether_header before ether_input() 
Message-ID:  <011001bf9445$adaca3d0$0132a8c0@MELANGE>
References:  <200003221915.OAA21851@chai.torrentnet.com>

next in thread | previous in thread | raw e-mail | index | archive | help
If you read the RFC or the book you'll see that the original Ethernet header
was copied to the end (the "trailer") and a new one was created.  The
purpose was to get the payload page-aligned on receipt so we could do page
flipping tricks with the Unibus adapter.  Worked very well for it's time;
but people frowned on it because it wasn't standard and so led to
interoperability problems.

    Sam

----- Original Message -----
From: "Bakul Shah" <bakul@torrentnet.com>
To: "Sam Leffler" <sam@errno.com>
Cc: <freebsd-net@FreeBSD.ORG>; "C. Stephen Gunn" <csg@waterspout.com>
Sent: Wednesday, March 22, 2000 11:15 AM
Subject: Re: Trimming ether_header before ether_input()


> > > something peculiar in all ethernet drivers.  Is there a historical
> > > reason that the ethernet header is trimmed from the mbuf chain
> > > before its passed to ether_input()?
> > >
> > > I can only assume that (at one time) there were ethernet devices
> > > (back in the IMP days) that handed you the link header and the
> > > payload in separate buffers.
> > >
> >
> > When all this code was written there was a link layer encapsulation
called a
> > trailer protocol that placed the Ethernet header at the end of the
packet.
>    ^^^^^^^^^^^^^^^
> > I think it's described in the "real BSD book" (the 4.2 one, not a later
one
> > :-)); if not there is an RFC that describes it.
>
> Perhaps you mean ``protocol header(s) above the ethernet
> level at the end of the packet''? The 14 byte ethernet header
> has to be at the front (unless you had significantly simpler
> devices than that old seeq8005).  A separate arg for the
> ethernet header may have something to do with a device where
> the header was in a separate place that could not be an mbuf
> struct?  Another reason may have to do with alignment.
> Some devices may prefer to put ethernet payload as well as
> header on a 4 byte boundary.
>



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?011001bf9445$adaca3d0$0132a8c0>