Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 May 1995 03:48:01 -0700 (PDT)
From:      "Rodney W. Grimes" <rgrimes@gndrsh.aac.dev.com>
To:        davidg@Root.COM
Cc:        jhay@mikom.csir.co.za, seki@sysrap.cs.fujitsu.co.jp, FreeBSD-Hackers@FreeBSD.org
Subject:   Re: Questions/comments on ed driver
Message-ID:  <199505141048.DAA03372@gndrsh.aac.dev.com>
In-Reply-To: <199505141021.DAA00807@corbin.Root.COM> from "David Greenman" at May 14, 95 03:21:38 am

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> >> >with DOS machines and packet drivers. When I used a client with the Novell ODI
> >> >drivers it did not work until I changed ETHER_MIN to 60. Now I know that the
> >> >ODI driver probably have a bug because they shouldn't care what the size of
> >> >the packet is, but that led me to believe that the minimum packet size was too
> >> >big. (64 bytes plus 4 for the CRC)
> >> >
> >> >One of my standard patches now is to change ETHER_MIN_LEN to 60.
> >> 
> >>    Gack. I think you're right. ETHER_MIN_LEN is used to round up small [IP]
> >> packets to the minimum size that ethernet supports. This is actually 60
> >> bytes of data. At one time this constant was also used in other places (and in
> >> those places its use was correct). ETHER_MAX_LEN should probably be changed to
> >> 1514 and then +4 added to it when comparing to "len" (which is header+data).
> >>    I'll check my documentation and investigate further. If the change to 60 is
> >> indeed correct, I'll commit it to CVS tonight.
> >
> >To maintain full compatibilty with all old ethernet systems we should never
> >generate a packet on the wire shorter than 64 bytes (the new standard) but
> >should accept packets of 60 bytes.  This was changed 8 years ago or something
> >like that and I just find it amazing that people still have not fixed there
> >broken code :-(.
> 
>    Ummm, according to the "DEC 21140" and the "WD83C690" specifications, the
> minimum 802.3 frame consists of 12 bytes of address (6 src + 6 dst), 2 byte
> type/length, 46 bytes of data, and 4 byte CRC. This is 64 bytes. However, the
> "length" is in terms of what the host puts into the buffer and doesn't include
> the CRC if automatic CRC generation is enabled on the card (it is). So from
> this perspective, the proper value as I read it is '60'.

And both chips are designed to Ethernet II, aka 802.3 standards.  The older
ethernet I standard did not state the number of data bytes, it just said
the packet size should be 60 bytes.  Some folks interpretted that to mean
the packet with CRC, some interpretted it to mean without CRC.  That is
one of the reasons we ever got an Ethernet II/802.3 specification,
as the original was ambiguous.

Trust me, I have seen enough 60 byte packets come down a wire in my
life time that it makes me sick, this are 42 data byte packets and
it is the reason I always program the 825X6 chips with this config
byte:
        cb_conf->byte[10] = 60;         /* minimum number of bytes is a frame */

Note that Intel's default (and 802.3 table) value for this register is
64.


-- 
Rod Grimes                                      rgrimes@gndrsh.aac.dev.com
Accurate Automation Company                   Custom computers for FreeBSD



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199505141048.DAA03372>