Subject: Re: Handling of short frames in gem(4) (was: CVS commit: src/sys/dev/ic)
To: None <source-changes@NetBSD.org>
From: David Young <dyoung@pobox.com>
List: source-changes
Date: 01/01/2008 18:46:03
On Tue, Jan 01, 2008 at 01:12:28PM +0000, Matthias Scheler wrote:
> On Mon, Dec 31, 2007 at 08:54:43PM +0000, David Young wrote:
> > Module Name:	src
> > Committed By:	dyoung
> > Date:		Mon Dec 31 20:54:43 UTC 2007
> > 
> > Modified Files:
> > 	src/sys/dev/ic: gem.c
> > 
> > Log Message:
> > gem_start() pads a Tx packet to the minimum ethernet frame length
> > by adding a segment to the Tx chain.  That entails using one more
> > descriptor.  It did not synchronize the last descriptor.
> > 
> > In gem_start(), clarify and repair DMA synchronization of the Tx
> > descriptors.  Sync them all.
> 
> Wouldn't it be cheaper (and simpler) to allocate a new mbuf and copy
> the data? IIRC DMA operations are quite expensive on UltraSPARC systems.

To which DMA operations do you refer?  Take a look at the code.

BTW, this was discussed in 2004 on tech-net@, subject heading "Small
Ethernet packet padding".

Dave

-- 
David Young             OJC Technologies
dyoung@ojctech.com      Urbana, IL * (217) 278-3933 ext 24