From 3832d28d5bcb86c4754a75491d90706ae52dea8f Mon Sep 17 00:00:00 2001 From: Tom Cosgrove Date: Thu, 3 May 2007 10:11:26 +0000 Subject: 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@ --- sys/dev/pci/if_bge.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'sys/dev') 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); -- cgit v1.2.3