Subject: Re: CVS commit: src/sys/dev/ic
To: Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
From: David Young <dyoung@pobox.com>
List: source-changes
Date: 12/08/2007 15:54:40
On Sun, Dec 09, 2007 at 06:47:16AM +0900, Izumi Tsutsui wrote:
> dyoung@pobox.com wrote:
> 
> > > > 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.
> 
> The problem is that fxp(4) driver has to update cb_command
> bits during the cb_status possibly being updated by fxp chip.

Why?

> They are both 16 bits and in the same 32 bit word,
> so 16bit atomic op is required to solve it but it
> isn't available on all alpha (it's the BWX extention
> though all PCI generation alphas might have it,
> which FreeBSD's fxp(4) does).

There is not any notion of NIC / host "ownership" of transmit descriptors?
I find that hard to believe.  How is the host able to modify any
descriptor at all without racing against the NIC?

Dave

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