diff options
author | wpaul <wpaul@FreeBSD.org> | 2003-08-10 18:04:35 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 2003-08-10 18:04:35 +0000 |
commit | 4a2cb9ec2f1e85f06c051a8fa7c43e76c090a5de (patch) | |
tree | f789229d7ed4189aa1b2c49dc429aed14cc93665 /sys | |
parent | 2dfbdc60227c57183359f3f15d82c61f411bcee8 (diff) | |
download | FreeBSD-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.c | 12 |
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 */ |