diff options
author | Tom Cosgrove <tom@cvs.openbsd.org> | 2007-05-03 10:11:26 +0000 |
---|---|---|
committer | Tom Cosgrove <tom@cvs.openbsd.org> | 2007-05-03 10:11:26 +0000 |
commit | 3832d28d5bcb86c4754a75491d90706ae52dea8f (patch) | |
tree | ba048fb21e6847d8607db2af2d3b740601e3f802 | |
parent | 08cf145cc6657ec83aff489cae6cf133d4c51f27 (diff) |
The ring replenish threshold change needed to work around a hardware
problem also appears to be required on the BCM5754/5787 in the Dell
PowerEdge SC440 and OptiPlex GX745. dlg identified the problem and
came up with the fix.
Tested by dlg@, ckuethe@, reyk@; thanks.
ok dlg@ beck@ reyk@
-rw-r--r-- | sys/dev/pci/if_bge.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/sys/dev/pci/if_bge.c b/sys/dev/pci/if_bge.c index 6c62138fca0..b5cddb3080f 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.211 2007/05/02 10:03:42 dlg Exp $ */ +/* $OpenBSD: if_bge.c,v 1.212 2007/05/03 10:11:25 tom Exp $ */ /* * Copyright (c) 2001 Wind River Systems @@ -1384,16 +1384,21 @@ bge_blockinit(struct bge_softc *sc) } /* - * Set the BD ring replentish thresholds. The recommended + * Set the BD ring replenish thresholds. The recommended * values are 1/8th the number of descriptors allocated to * each ring. */ i = BGE_STD_RX_RING_CNT / 8; - /* Use a value of 8 for these chips to workaround HW errata */ + /* + * Use a value of 8 for the following chips to workaround HW errata. + * Some of these chips have been added based on empirical + * evidence (they don't work unless this is done). + */ if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5750 || BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5752 || - BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5755) + BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5755 || + BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5787) i = 8; CSR_WRITE_4(sc, BGE_RBDI_STD_REPL_THRESH, i); |