From owner-freebsd-questions@FreeBSD.ORG Tue Sep 14 05:20:32 2004 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 29E2D16A4CE for ; Tue, 14 Sep 2004 05:20:32 +0000 (GMT) Received: from o2.hostbaby.com (o2.hostbaby.com [208.187.29.121]) by mx1.FreeBSD.org (Postfix) with SMTP id BD36043D4C for ; Tue, 14 Sep 2004 05:20:31 +0000 (GMT) (envelope-from ceo@l-i-e.com) Received: (qmail 19179 invoked by uid 1001); 14 Sep 2004 05:20:37 -0000 Received: from 67.167.52.21 (SquirrelMail authenticated user ceo@l-i-e.com); by www.l-i-e.com with HTTP; Mon, 13 Sep 2004 22:20:37 -0700 (PDT) Message-ID: <1175.67.167.52.21.1095139237.squirrel@www.l-i-e.com> In-Reply-To: <75A7219A-0366-11D9-AB92-003065ABFD92@mac.com> References: <1093.67.167.52.21.1094522790.squirrel@www.l-i-e.com> <1325.67.167.52.21.1094527694.squirrel@www.l-i-e.com> <10027.66.243.145.85.1094788839.squirrel@www.l-i-e.com> <1333.67.167.52.21.1094845927.squirrel@www.l-i-e.com> <75A7219A-0366-11D9-AB92-003065ABFD92@mac.com> Date: Mon, 13 Sep 2004 22:20:37 -0700 (PDT) From: "Richard Lynch" To: freebsd-questions@freebsd.org User-Agent: Hostbaby Webmail X-Mailer: Hostbaby Webmail MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal Subject: Re: Broadcom 440x NIC not recognized on boot X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: ceo@l-i-e.com List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Sep 2004 05:20:32 -0000 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