summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorBrad Smith <brad@cvs.openbsd.org>2008-07-16 03:56:26 +0000
committerBrad Smith <brad@cvs.openbsd.org>2008-07-16 03:56:26 +0000
commitfb67658fbbc2bfd71e15fd14cb8b81a75e42ecbb (patch)
treee0a9e6b8bb55597bb8fb2c276d63dbbad8f79756 /sys/dev
parent0a9461c1de244904002f70a9dcc56a971248caff (diff)
Enable the read DMA engine's PCI read request burst length long burst
mode (4KB) for PCIe chips. This resolves the poor TX performance for the PCIe chips. The result being a bit under double the TX performance on a Gig connection (roughly 495 Mb/s -> 940 Mb/s). Tested by reyk@, sthen@, brad@ and a few end users.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/pci/if_bge.c6
-rw-r--r--sys/dev/pci/if_bgereg.h9
2 files changed, 7 insertions, 8 deletions
diff --git a/sys/dev/pci/if_bge.c b/sys/dev/pci/if_bge.c
index c6a9555d65e..cb093f3301e 100644
--- a/sys/dev/pci/if_bge.c
+++ b/sys/dev/pci/if_bge.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_bge.c,v 1.236 2008/06/07 19:05:11 brad Exp $ */
+/* $OpenBSD: if_bge.c,v 1.237 2008/07/16 03:56:25 brad Exp $ */
/*
* Copyright (c) 2001 Wind River Systems
@@ -1669,8 +1669,8 @@ bge_blockinit(struct bge_softc *sc)
dma_read_modebits =
BGE_RDMAMODE_ENABLE | BGE_RDMAMODE_ALL_ATTNS;
- if (sc->bge_flags & BGE_PCIE && 0)
- dma_read_modebits |= BGE_RDMA_MODE_FIFO_LONG_BURST;
+ if (sc->bge_flags & BGE_PCIE)
+ dma_read_modebits |= BGE_RDMAMODE_FIFO_LONG_BURST;
CSR_WRITE_4(sc, BGE_RDMA_MODE, dma_read_modebits);
}
diff --git a/sys/dev/pci/if_bgereg.h b/sys/dev/pci/if_bgereg.h
index 4a6a84bc4c3..c482e2481b7 100644
--- a/sys/dev/pci/if_bgereg.h
+++ b/sys/dev/pci/if_bgereg.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_bgereg.h,v 1.83 2008/04/20 01:32:43 brad Exp $ */
+/* $OpenBSD: if_bgereg.h,v 1.84 2008/07/16 03:56:25 brad Exp $ */
/*
* Copyright (c) 2001 Wind River Systems
@@ -1362,10 +1362,8 @@
#define BGE_RDMAMODE_PCI_FIFOOREAD_ATTN 0x00000100
#define BGE_RDMAMODE_LOCWRITE_TOOBIG 0x00000200
#define BGE_RDMAMODE_ALL_ATTNS 0x000003FC
-
-/* Alternate encodings for PCI-Express, from Broadcom-supplied Linux driver */
-#define BGE_RDMA_MODE_FIFO_LONG_BURST ((1 << 17) || (1 << 16))
-#define BGE_RDMA_MODE_FIFO_SIZE_128 (1 << 17)
+#define BGE_RDMAMODE_FIFO_SIZE_128 0x00020000
+#define BGE_RDMAMODE_FIFO_LONG_BURST 0x00030000
/* Read DMA status register */
#define BGE_RDMASTAT_PCI_TGT_ABRT_ATTN 0x00000004
@@ -1395,6 +1393,7 @@
#define BGE_WDMAMODE_PCI_FIFOOREAD_ATTN 0x00000100
#define BGE_WDMAMODE_LOCREAD_TOOBIG 0x00000200
#define BGE_WDMAMODE_ALL_ATTNS 0x000003FC
+#define BGE_WDMAMODE_RX_ACCEL 0x00000400
/* Write DMA status register */
#define BGE_WDMASTAT_PCI_TGT_ABRT_ATTN 0x00000004