From owner-freebsd-hackers Sun May 14 03:48:52 1995 Return-Path: hackers-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id DAA05597 for hackers-outgoing; Sun, 14 May 1995 03:48:52 -0700 Received: from gndrsh.aac.dev.com (gndrsh.aac.dev.com [198.145.92.241]) by freefall.cdrom.com (8.6.10/8.6.6) with ESMTP id DAA05587 for ; Sun, 14 May 1995 03:48:48 -0700 Received: (from rgrimes@localhost) by gndrsh.aac.dev.com (8.6.11/8.6.9) id DAA03372; Sun, 14 May 1995 03:48:01 -0700 From: "Rodney W. Grimes" Message-Id: <199505141048.DAA03372@gndrsh.aac.dev.com> Subject: Re: Questions/comments on ed driver To: davidg@Root.COM Date: Sun, 14 May 1995 03:48:01 -0700 (PDT) Cc: jhay@mikom.csir.co.za, seki@sysrap.cs.fujitsu.co.jp, FreeBSD-Hackers@FreeBSD.org In-Reply-To: <199505141021.DAA00807@corbin.Root.COM> from "David Greenman" at May 14, 95 03:21:38 am X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 2722 Sender: hackers-owner@FreeBSD.org Precedence: bulk > > >> >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