On 7/24/07, Charlie Farinella <[EMAIL PROTECTED]> wrote:
Thank you, I think this will solve my problem, but I have no idea how to proceed. I assume I need to recompile the kernel and swap out the new if_bge.c file for the one included with the OS. Is that correct? I've looked briefly at docs and some how-to's but haven't seen any specific instructions. If anyone knows of some documentation for this, a pointer would be appreciated.
much like the instructions at the beginning of other patches... general information on how to patch an openbsd is in the FAQ http://www.openbsd.org/faq/faq10.html#Patches http://www.openbsd.org/faq/faq5.html#Building let me know if this doesn't apply or doesn't work. save the diff below (into /tmp/bgediff, for example) cd /sys/dev/pci patch -C < /tmp/bgediff (check that the diff would apply correctly) patch < /tmp/bgediff cd /sys/arch/i386/conf/ (assuming you're running i386) config GENERIC cd ../compile/GENERIC make clean depend bsd make install reboot Index: if_bge.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_bge.c,v Retrieving revision 1.211 Retrieving revision 1.212 server -u -N -p -r1.211 -r1.212 if_bge.c --- if_bge.c 24 Jul 2007 14:42:55 1.211 +++ if_bge.c 24 Jul 2007 14:42:55 1.212 @@ -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); -- GDB has a 'break' feature; why doesn't it have 'fix' too?

