summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorwpaul <wpaul@FreeBSD.org>2003-08-10 18:04:35 +0000
committerwpaul <wpaul@FreeBSD.org>2003-08-10 18:04:35 +0000
commit4a2cb9ec2f1e85f06c051a8fa7c43e76c090a5de (patch)
treef789229d7ed4189aa1b2c49dc429aed14cc93665 /sys
parent2dfbdc60227c57183359f3f15d82c61f411bcee8 (diff)
downloadFreeBSD-src-4a2cb9ec2f1e85f06c051a8fa7c43e76c090a5de.zip
FreeBSD-src-4a2cb9ec2f1e85f06c051a8fa7c43e76c090a5de.tar.gz
The BCM5704 ASIC has a smaller mbuf space than the 5700/1/2/3. Failure
to configure this correctly yields many watchdog timeouts even on lightly loaded machines. This is a common complaint from users with Dell 1750 servers with built-in dual 5704 NICs.
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/bge/if_bge.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index d781779..df389e4 100644
--- a/sys/dev/bge/if_bge.c
+++ b/sys/dev/bge/if_bge.c
@@ -1310,16 +1310,24 @@ bge_blockinit(sc)
*/
CSR_WRITE_4(sc, BGE_PCI_MEMWIN_BASEADDR, 0);
+ /* Note: the BCM5704 has a smaller mbuf space than other chips. */
+
if (sc->bge_asicrev != BGE_ASICREV_BCM5705) {
/* Configure mbuf memory pool */
if (sc->bge_extram) {
CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_BASEADDR,
BGE_EXT_SSRAM);
- CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x18000);
+ if (sc->bge_asicrev == BGE_ASICREV_BCM5704)
+ CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x10000);
+ else
+ CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x18000);
} else {
CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_BASEADDR,
BGE_BUFFPOOL_1);
- CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x18000);
+ if (sc->bge_asicrev == BGE_ASICREV_BCM5704)
+ CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x10000);
+ else
+ CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_LEN, 0x18000);
}
/* Configure DMA resource pool */
OpenPOWER on IntegriCloud