On Sun, Aug 20, 2006 at 12:03:14PM +0200, Arnd Bergmann wrote: > On Sunday 20 August 2006 08:31, Benjamin Herrenschmidt wrote: > > > card->low_watermark->next->dmac_cmd_status |= SPIDER_NET_DESCR_TXDESFLG; > > > mb(); > > > card->low_watermark->dmac_cmd_status &= ~SPIDER_NET_DESCR_TXDESFLG; > > > card->low_watermark = card->low_watermark->next; > > > > > > when we queue another frame for TX. > > > > I would have expected those to be racy vs. the hardware... what if the > > hardware is updating dmac_cmd_status just as your are trying to and the > > bit out of it ? > > Right, that doesn't work. It is the only bit we use in that byte though, > so maybe it can be done with a single byte write.
Thanks, you're right, I missed that. I'll change this to byte access shortly. Any recommendations for style/api for byte access? I could create a searate patch to change struct descr {} to split the u32 into several u8's; there's a dozen spots that get touched. Alternatel, I could do a cheesy cast to char[4] and access that way. Opinions? --linas - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html