tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/39608: bge(4) constant freeze on BCM5906M



Hi,

Noel Carnat confirmed that the attached patch worked.
Some values for dma were wrong.

Greetings Chalrie

Index: if_bge.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pci/if_bge.c,v
retrieving revision 1.153
diff -u -r1.153 if_bge.c
--- if_bge.c    7 Nov 2008 00:20:07 -0000       1.153
+++ if_bge.c    10 Nov 2008 21:29:31 -0000
@@ -1377,7 +1377,7 @@
                                           BGE_PCI_CONF_DEV_CTRL);
                aprint_debug_dev(sc->bge_dev, "pcie mode=0x%x\n", device_ctl);
 
-               if ((device_ctl & 0x00e0) && 0) {
+               if ((device_ctl & 0x00e0) && 0) { 
                        /*
                         * XXX jonathan%NetBSD.org@localhost:
                         * This clause is exactly what the Broadcom-supplied
@@ -1568,22 +1568,22 @@
        CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_MACRX_LOWAT, 24);
        CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_HIWAT, 48);
 #else
+       
        /* new broadcom docs strongly recommend these: */
        if ((sc->bge_quirks & BGE_QUIRK_5705_CORE) == 0) {
                if (ifp->if_mtu > ETHER_MAX_LEN) {
                        CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_READDMA_LOWAT, 0x50);
                        CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_MACRX_LOWAT, 0x20);
                        CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_HIWAT, 0x60);
-               } else if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5906) {
-                       CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_READDMA_LOWAT, 0x0);
-                       CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_MACRX_LOWAT, 0x04);
-                       CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_HIWAT, 0x10);
                } else {
-                       /* Values from Linux driver... */
                        CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_READDMA_LOWAT, 304);
                        CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_MACRX_LOWAT, 152);
                        CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_HIWAT, 380);
                }
+       } else if (BGE_ASICREV(sc->bge_chipid) == BGE_ASICREV_BCM5906) {
+                       CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_READDMA_LOWAT, 0x0);
+                       CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_MACRX_LOWAT, 0x04);
+                       CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_HIWAT, 0x10);
        } else {
                CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_READDMA_LOWAT, 0x0);
                CSR_WRITE_4(sc, BGE_BMAN_MBUFPOOL_MACRX_LOWAT, 0x10);


Home | Main Index | Thread Index | Old Index