Subject: CVS commit: src/sys/dev/pci
To: None <source-changes@NetBSD.org>
From: Izumi Tsutsui <tsutsui@netbsd.org>
List: source-changes
Date: 02/28/2007 17:40:11
Module Name:	src
Committed By:	tsutsui
Date:		Wed Feb 28 17:40:11 UTC 2007

Modified Files:
	src/sys/dev/pci: if_nfe.c if_nfereg.h

Log Message:
Apply patches which may fix RX stall problem on nfe(4):
- make DMA descriptors volatile to avoid possible unintended reordering
  which might cause some race conditions
- process interrupts until all NFE_IRQ_WANTED bits are handled

and also put misc fixes:
- return 1 and call nfe_start() in nfe_intr() only if any own interrupts
  are actually handled
- use bus_dmamap_load_mbuf(9) for RX mbufs rather than bus_dmamap_load(9)
  with mtod(9) and MCLBYTES
- check sc->txq.queued to see if TX descriptors are queued or handled
  in nfe_start() and nfe_txeof()
- use proper BUS_DMASYNC_{PRE,POST} ops
- prepare and use NFE_[RT]X_NEXTDESC() macro
- rename NFE_TX_TCP_CSUM to NFE_TX_TCP_UDP_CSUM since it also enables
  hardware udp4csum-tx for UDP4 packets
- some minor optimization
- misc KNF

Tested and confirmed by matthew green by
"to send >25MB/sec to nfe0 for over one hour,"
and also tested by me (with light TRX load on 100baseTX though)
for a month.


To generate a diff of this commit:
cvs rdiff -r1.13 -r1.14 src/sys/dev/pci/if_nfe.c
cvs rdiff -r1.3 -r1.4 src/sys/dev/pci/if_nfereg.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.