Subject: Re: CVS commit: src/sys/dev/ic
To: None <source-changes@NetBSD.org>
From: David Young <dyoung@pobox.com>
List: source-changes
Date: 12/08/2007 14:11:36
On Sat, Dec 08, 2007 at 03:45:43PM +0000, Izumi Tsutsui wrote:
> 
> Module Name:	src
> Committed By:	tsutsui
> Date:		Sat Dec  8 15:45:43 UTC 2007
> 
> Modified Files:
> 	src/sys/dev/ic: i82557.c i82557reg.h i82557var.h
> 
> Log Message:
> Pull several fixes from OpenBSD's fxp.c:
> 
> Rev 1.41:
> > use a nop with I bit set at the end of the tx chain.  This avoids a race
> > between status update and clearing the suspend bit on machines which can't
> > write data smaller than 32bits at a time.
> This should fix PR port-alpha/30560.

It looks to me like this problem can be solved more simply by
reading/writing the cb_status and cb_command fields simultaneously as
one 32-bit word.

BTW, it looks to me like there are some DMA barriers missing
from fxp.  After fxp examines a transmit descriptor and finds
that the completion bit, FXP_CB_STATUS_C, is clear, it should
bus_dmamap_sync(BUS_DMASYNC_PREREAD) the descriptor.

BTW, what is the cacheline size on the Alpha?  Are the transmit
descriptors cacheline-aligned?

Dave

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