summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Cosgrove <tom@cvs.openbsd.org>2007-05-03 10:11:26 +0000
committerTom Cosgrove <tom@cvs.openbsd.org>2007-05-03 10:11:26 +0000
commit3832d28d5bcb86c4754a75491d90706ae52dea8f (patch)
treeba048fb21e6847d8607db2af2d3b740601e3f802
parent08cf145cc6657ec83aff489cae6cf133d4c51f27 (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.c13
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);