Re: Broadcom 440x NIC not recognized on boot

From: Richard Lynch (ceo_at_l-i-e.com)
Date: 09/14/04

  • Next message: Michael C. Shultz: "Re: hi"
    Date: Mon, 13 Sep 2004 22:20:37 -0700 (PDT)
    To: freebsd-questions@freebsd.org
    
    

    FreeBSD 5.2.1

    I am attempting to add support for the built-in network device in my
    laptop, a Dell Inspiron 700m, by altering the C source code in /usr/src/

    Bear with me -- This is roughly equivalent to a plumber doing brain
    surgery :-)

    Windows reports this device as a Broadcom 440x, and the docs/sources for
    the BFE driver say that the driver is likely to work for the 440x series,
    so this is not as hopeless as one might think.

    I have altered /usr/src/sys/dev/bfe/if_bfereg.h and
    /usr/src/sys/dev/bfe/if_bfe.c to have lines similar to those for the 4401
    device, but with 170c as the device id.

    For those reading the whole thread, and noting an anomoly from what
    another posted, 4324 is the *wireless* card device id, and 170c is the
    wired device. At least, that's what Windows says, and both IDs do show
    up, and neither of them works. (yet)

    I have achieved what could be described as some level of success...

    dmesg output now indicates the card is recognized, and sort of names the
    device as 'bfe0'

    Of course, I understand that's just because I may have lied to the
    computer, so the 'bfe0' doesn't necessarily mean the driver is going to
    work some day or anything.

    So all this really boils down to is I have managed to re-build a kernel
    correctly. Hey, that's *some* level of success! :-)

    But no /dev/bfe0 is created, and "ifconfig -a" shows just lo.

    So it's not really working yet.

    Some things that may bear fruit if I knew what to do about them...

    #1
    Right after 'bfe0' is detected, a CardBus Bridge says "Could not grab
    register memory"

    dmesg also tells me:
    "cbb0 requested unsupported memory range 0x88000000 - 0xffffffff (decoding
    0x0-0x0, 0x0-0x0)"

    What little I understand of what I've read makes me think that this may be
    indicative of a problem related to my network card...

    This cardbus thingie lets the OS "talk" to my network card, right?

    And it ain't getting the register memory it needs, right?

    So...

    Can I set aside that memory range for it, or make it get memory in a
    supported memory range somehow, or ???

    Does knowing the memory range set aside by Windows help?...
    (FABF0000 - FABF1FFF)
    Both Windows and FreeBSD agree on IRQ 10, so that's something :-)

    >From reading the source code, it would seem that in the old days, I would
    be attempting to do this from the BIOS, but that section of code does not
    seem to be in effect, and I'm pretty sure the BIOS doesn't give my any
    option anywhere near that complicated.

    It's the simplest (or is that stupidest) BIOS I've ever seen, the times
    I've been into it. I'll check again, of course, but it's not looking
    promising.

    The source code also refers to PCI assigning the memory block, and some
    day ACPI assigning the memory block.

    I haven't puzzled out whether the PCI code or the ACPI code is the one
    that is doing the assigning at this point.

    I might be able to printf a bunch of debug messages and work that out over
    the course of, say, several weeks or even months of re-making the kernel
    and re-booting... Hopefully, somebody reading this can help me shorten
    that. :-)

    It's also entirely possible that this cardbus bridge thingie has nothing
    to do with my network card, and I'm barking up the wrong tree entirely.
    Please let me know if I'm on the wrong tack.

    #2
    The BFE driver seems to be relying heavily on the MII protocol in
    /usr/src/sys/dev/mii, and there is an entry in ~/miidevs for the Broadcom
    4401 referring to an OUI and PHYs and the magic number for the 4401 is
    0x36

    But looking at the URL referenced in miidevs doesn't seem to match up 0x36
    with Broadcom... I'm guessing 0x36 is Broadcom's internal OUI-related
    number for this device, which is not the same as the device id in the PCI
    bus (170c).

    My real questions for MII are:

    Am I correct in assuming I need to add a magic number to miidevs to get
    the interface card to work?

    How would I figure out what that magic number is?

    If any reader has a 4401 and wouldn't mind doing "pciconf -lv" and/or
    "dmesg -v" and search for 0x36. If you find it, please send me the line
    that contains it, so I can find my magic number in the same spot... I
    hope.

    You can see a complete dmesg output (from before I altered the source) at:
    http://phpbootcamp.com/articles/inspiron700m.htm
    Scroll all the way to the bottom.

    The dmesg output from after I altered the source doesn't differ much,
    except it claims that the device is a Broadcom 4403, and tries to name it
    bfe0.

    I'm not sure who posted here that it was a Broadcom 4403, but this would
    seem to indicate that it is a 4401-B0:
    http://lkml.org/lkml/2004/8/23/202
    So that 4403 probably isn't even "right" (but I'll fix that shortly)
    It doesn't affect the actual working of the driver -- It's just a text
    message.

    On the plus side, I'm now more hopeful that the 4401 driver will work for
    the 4401-B0 device, once I get all the pieces in place.

    I suppose the really short version of this email is:
    Should I focus on getting that CardBus Bridge to have a valid memory range
    first, or should I try to figure out the MII magic number first?
    Or am I gonna have to do both anyway, so I should just start digging?

    Thanks in advance! I really do appreciate all the help!

    I really do hope to contribute back a patch with this device working soon :-)

    -- 
    Like Music?
    http://l-i-e.com/artists.htm
    _______________________________________________
    freebsd-questions@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-questions
    To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org"
    

  • Next message: Michael C. Shultz: "Re: hi"

    Relevant Pages

    • Re: Office 2007: wot a pile of shite
      ... How I Connected My New PC to the Network ... network card supplied with it, so I didn't have to worry about that. ... I found a copy of the network drivers on floppy disk. ... increase the available memory. ...
      (uk.comp.sys.mac)
    • Re: How small is rescue system?
      ... JeOS on a SD card, this would give an option to add ... severely restricted memory. ... network, or make it so it has to be configured manually. ...
      (alt.os.linux.suse)
    • Re: Sound recording gadget?
      ... IRQ and I/O port card you were a Wizard. ... How I Connected My New PC to the Network ... I found a copy of the network drivers on floppy disk. ... AUTOEXEC.BAT files to increase the available memory. ...
      (uk.comp.sys.mac)
    • Re: file copying problems
      ... memory chips that do not match the board well. ... found out that the two suppliers bought their memory from the same source. ... card was at fault, because I had already swapped everything else. ... and network or IDE card. ...
      (comp.os.linux.misc)
    • [RFC][PATCH 0/9] Network receive deadlock prevention for NBD
      ... Convergence of network and storage paths" ... "Net vm deadlock fix " ... Maybe it is another memory deadlock, ... dipping into the memalloc reserve if it must. ...
      (Linux-Kernel)