summaryrefslogtreecommitdiff
path: root/sys/dev/pci/bt8370.c
diff options
context:
space:
mode:
authorBrad Smith <brad@cvs.openbsd.org>2005-11-19 23:04:49 +0000
committerBrad Smith <brad@cvs.openbsd.org>2005-11-19 23:04:49 +0000
commit9ee030d166954ee9f2e8a6eb27dc210c97c415c9 (patch)
tree231476c5471705baf81cf151f79208ac83ac6a6b /sys/dev/pci/bt8370.c
parent98d8ec722dc1f84eb7bdfda92701982e3198bc77 (diff)
Correct a performance bug from Bill Paul's original FreeBSD bge(4) driver:
Each call to the FreeBSD bge_start() routine the transmit producer pointer index from the chip mailbox register BGE_MBX_TX_HOST_PROD0_LO. The local copy of that value is then updated by bge_encap() as bge_encap() encapsulates packets in the Tx ring. If bge_encap() succeds in encpuslating one or more packets, bge_start() tells the chip to start sending the newly-encinitiates writes the new value back to the chip mailbox register. However, comparison of the Linux drivers (Broadcom-supplied and open-source tg3.c) and to the OpenSolaris driver confirms that register BGE_MBX_TX_HOST_PROD0_LO is write-only to software. Thus, we can just keep a copy in the softc, and eliminate the (expensive) PCI register write on each call to bge_start(). From jonathan NetBSD tested by krw@, sturm@ and I on a few different bge NICs.
Diffstat (limited to 'sys/dev/pci/bt8370.c')
0 files changed, 0 insertions, 0 deletions