Hi, guys. I'm learning about PCI and started looking at the bge driver.
I grepped on an error message that I found in the bge man page to find the bge source file, but grep didn't find it in if_bge.c, but did find it in lge.c. Is the man page incorrect for bge, or have I missed something (cluesticks, please!)? If it is incorrect, I'll give a go at making a patch, but just assuming at this point that I've missed something. bge man snippet ... DIAGNOSTICS (1) bge%d: can't find mem space A fatal initialization error has occurred. (2) bge%d: couldn't map interrupt A fatal initialization error has occurred. (3) bge%d: no memory for jumbo buffer queue! The driver failed to allocate memory for jumbo frames during initialization. (4) bge%d: watchdog timeout The device has stopped responding to the network, or there is a problem with the network connection (cable). The numbers in parenthesis are mine, for reference. I can see (1) and (2) in the source code, but not (3). (4) is close but not the same - "watchdog timeout -- resetting" - in the bge source. I'm looking at 4.8 release with patches, /usr/src/sys/dev/pci/if_bge.c (but same list is online for 4.9) It seems to be exactly the same diagnostics list as for lge, but I can find all those messages in the lge source. # grep printf if_bge.c #define DPRINTF(x) do { if (bgedebug) printf x; } while (0) #define DPRINTFN(n,x) do { if (bgedebug >= (n)) printf x; } while (0) printf("%s: nvram read timed out\n", sc->bge_dev.dv_xname); printf("%s: eeprom read timed out\n", sc->bge_dev.dv_xname); printf("%s: PHY read timed out\n", sc->bge_dev.dv_xname); printf("%s: PHY read timed out\n", sc->bge_dev.dv_xname); printf("%s: unable to create dmamap for slot %d\n", printf("%s: unable to create dmamap for slot %d\n", printf("%s: can't alloc txdmamap_pool_entry\n", printf("%s: buffer manager failed to start\n", printf("%s: flow-through queue init failed\n", printf("%s: host coalescing engine failed to idle\n", (1) printf(": can't find mem space\n"); (2) printf(": couldn't map interrupt\n"); printf(", "); printf("unknown ASIC (0x%x)", sc->bge_chipid); printf("%s (0x%x)", br->br_name, sc->bge_chipid); printf(": failed to read station address\n"); printf(": can't alloc rx buffers\n"); printf(": can't map dma buffers (%lu bytes)\n", printf(": can't create dma map\n"); printf(": failed to read media type\n"); printf(": couldn't establish interrupt"); printf(" at %s", intrstr); printf("\n"); printf(": %s, address %s\n", intrstr, ether_sprintf(sc->arpcom.ac_enaddr)); printf("%s: no PHY found!\n", sc->bge_dev.dv_xname); printf("%s: reset timed out\n", sc->bge_dev.dv_xname); printf("%s: firmware handshake timed out\n", printf("%s: initialization failure\n", sc->bge_dev.dv_xname); printf("%s: 5705 A0 chip failed to load RX ring\n", (4) printf("%s: watchdog timeout -- resetting\n", sc->bge_dev.dv_xname); # grep printf if_lge.c #define DPRINTF(x) if (lgedebug) printf x #define DPRINTFN(n,x) if (lgedebug >= (n)) printf x printf("%s: EEPROM read timed out\n", sc->sc_dv.dv_xname); printf("%s: PHY read timed out\n", sc->sc_dv.dv_xname); printf("%s: PHY write timed out\n", sc->sc_dv.dv_xname); printf("%s: reset never completed\n", sc->sc_dv.dv_xname); printf("%s: chip is in D%d power mode " printf(": can't map i/o space\n"); (1) printf(": can't map mem space\n"); (2) printf(": couldn't map interrupt\n"); printf(": couldn't establish interrupt"); printf(" at %s", intrstr); printf("\n"); printf(": %s", intrstr); printf(", address %s\n", ether_sprintf(eaddr)); printf("%s: can't alloc rx buffers\n", sc->sc_dv.dv_xname); printf("%s: can't map dma buffers (%d bytes)\n", printf("%s: can't create dma map\n", sc->sc_dv.dv_xname); printf("%s: jumbo buffer allocation failed\n", printf("%s: no PHY found!\n", sc->sc_dv.dv_xname); printf("%s: can't alloc rx buffers\n", sc->sc_dv.dv_xname); printf("%s: can't map dma buffers (%d bytes)\n", printf("%s: can't create dma map\n", sc->sc_dv.dv_xname); printf("%s: can't load dma map\n", sc->sc_dv.dv_xname); (3) printf("%s: no memory for jumbo buffer queue!\n", printf("%s: initialization failed: no " (4) printf("%s: watchdog timeout\n", sc->sc_dv.dv_xname); Thanks.