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?

Reply via email to