Subject: Re: What is in bcm43xx-wireless-dev.git?

From: Michael Buesch <[email-masked]>
Date: Fri, 12 Jan 2007 15:06:06 +0100

On Friday 12 January 2007 08:25, Pavel Roskin wrote:
> Hello, Michael!
> 
> I've tried the master branch of bcm43xx-wireless-dev.git for the first
> time.  The results are not encouraging so far (although I'm quite new to
> this chipset).
> 
> drivers/ssb/driver_mips/mips.c includes asm/time.h, which is missing on
> x86_64.  It also refers to struct ssb_serial_ports, which is not defined
> anywhere.

Yeah, CONFIG_SSB_MIPS should depend on the MIPS CPU.
Which kconfig option do you suggest to make a "depend" on?

> drivers/ssb/driver_pci/pcicore.c refers to SSB_PCICORE_SBTOPCI1_CFG1
> that is not defined anywhere in the kernel.

Yeah, could be a typo. I'll have a look at it.

> I could send you huge logs, but I think it's already a clear sign that
> you didn't compile-test the current tree with CONFIG_SSB_DRIVER_MIPS
> enabled.  Things are better if it is disabled.

It is tested. But obviously on MIPS platform.

> In case you haven't seen those warnings:
> 
> /home/proski/src/linux-2.6/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c:843: warning: 'bcm43xx_wireless_core_mark_inactive' defined but not used
> /home/proski/src/linux-2.6/drivers/net/wireless/d80211/bcm43xx/bcm43xx_main.c:3032: warning: 'bcm43xx_bluetooth_coext_enable' defined but not used

I am very well aware of these warnings, as they mark
unimplemented features.

> I could compile the code, and it even loaded as a module, but the kernel
> oopsed once I brought wlan0 up by ifconfig.
> 
> bcm43xx_d80211: Adding Interface type 2
> bcm43xx_d80211: Found PHY: Version 4, Type 2, Revision 8
> bcm43xx_d80211: Found Radio: Manuf 0x17F, Version 0x2050, Revision 2
> bcm43xx_d80211: Loading firmware version 351.126 (2006-07-29 05:54:02)
> bcm43xx_d80211: Radio turned on
> bcm43xx_d80211: FIXME: Possibly broken code in bcm43xx_phy_initg() at /home/proski/src/linux-2.6/drivers/net/wireless/d80211/bcm43xx/bcm43xx_phy.c:1650
> bcm43xx_d80211: Chip initialized
> Unable to handle kernel NULL pointer dereference at 0000000000000000 RIP: 
>  [<ffffffff8021eee6>] dma_alloc_coherent+0x52/0x23f
> PGD 50d1067 PUD 5201067 PMD 0 
> Oops: 0000 [1] SMP 
> CPU 1 
> Modules linked in: bcm43xx_d80211 ssb
> Pid: 2623, comm: ifconfig Not tainted 2.6.20-rc3 #5
> RIP: 0010:[<ffffffff8021eee6>]  [<ffffffff8021eee6>] dma_alloc_coherent+0x52/0x23f
> RSP: 0018:ffff810005127bd8  EFLAGS: 00010206
> RAX: 0000000000000000 RBX: 0000000000003500 RCX: 00000000000010d4
> RDX: 00000000ffffffff RSI: 0000000000001000 RDI: ffff81000196c3a8
> RBP: 00000000000010d0 R08: ffff81001f6d1600 R09: 0000000000000004
> R10: 0000000000000001 R11: ffff810001122c60 R12: 0000000000001000
> R13: ffff810001b96000 R14: ffff81000196c3a8 R15: 00000000ffffffff
> FS:  00002b411b2133b0(0000) GS:ffff810001827440(0000) knlGS:0000000000000000
> CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
> CR2: 0000000000000000 CR3: 0000000015fdf000 CR4: 00000000000006e0
> Process ifconfig (pid: 2623, threadinfo ffff810005126000, task ffff81001f58d180)
> Stack:  ffff81001ee6a3c0 ffff81001ee6a3e8 ffff810001b96000 0000000000003500
>  ffff81001ee6a3c0 0000000000000080 ffff810001b96000 0000000000000000
>  0000000000000000 ffffffff88019966 0000000000000005 0000000100000036
> Call Trace:
>  [<ffffffff88019966>] :bcm43xx_d80211:bcm43xx_setup_dmaring+0x1a7/0x460
>  [<ffffffff88019ea3>] :bcm43xx_d80211:bcm43xx_dma_init+0xc0/0x290
>  [<ffffffff88008131>] :bcm43xx_d80211:bcm43xx_wireless_core_init+0x78f/0x9f1
>  [<ffffffff8022885e>] mntput_no_expire+0x19/0x77
>  [<ffffffff8020a3c3>] do_page_fault+0x40b/0x74a
>  [<ffffffff88009f4e>] :bcm43xx_d80211:bcm43xx_add_interface+0x67/0xeb
>  [<ffffffff804378d2>] ieee80211_open+0x1c6/0x2c5
>  [<ffffffff803fd3ec>] dev_open+0x2f/0x6e
>  [<ffffffff803fbcd5>] dev_change_flags+0x5a/0x119
>  [<ffffffff80423bab>] devinet_ioctl+0x235/0x59c
>  [<ffffffff803f4bef>] sock_ioctl+0x1c8/0x1e5
>  [<ffffffff8023b862>] do_ioctl+0x21/0x6b
>  [<ffffffff8022b614>] vfs_ioctl+0x25c/0x275
>  [<ffffffff8024559b>] sys_ioctl+0x3c/0x5c
>  [<ffffffff802548ee>] system_call+0x7e/0x83
> 
> 
> Code: 4c 23 38 49 39 d7 0f 46 e9 49 8d 44 24 ff 83 ca ff 49 89 c5 
> RIP  [<ffffffff8021eee6>] dma_alloc_coherent+0x52/0x23f
>  RSP <ffff810005127bd8>
> CR2: 0000000000000000

Hm, not sure why this oopses. It works on PPC (can transmit data and so on).

> It's Fedora Core 6 x86_64 on a Dell Latitude with Core 2 Duo and an PCIe
> wireless card.  SMP is enabled.  From .config:

PCIe is a seperate issue and not really supported by bcm43xx.

> CONFIG_BCM43XX_D80211=m
> CONFIG_BCM43XX_D80211_PCI=y
> CONFIG_BCM43XX_D80211_DEBUG=y
> CONFIG_BCM43XX_D80211_DMA=y
> CONFIG_BCM43XX_D80211_PIO=y
> CONFIG_BCM43XX_D80211_DMA_AND_PIO_MODE=y
> # CONFIG_BCM43XX_D80211_DMA_MODE is not set
> # CONFIG_BCM43XX_D80211_PIO_MODE is not set
> [skip]
> CONFIG_SSB=m
> # CONFIG_SSB_SILENT is not set
> # CONFIG_SSB_DEBUG is not set
> CONFIG_SSB_DRIVER_EXTIF=y

You can disable that. I think that should probably depend
on CONFIG_SSB_DRIVER_MIPS. I'll take a look.

> # CONFIG_SSB_DRIVER_MIPS is not set
> 
> [root@localhost proski]# lspci -v -s 0c:00.0
> 0c:00.0 Network controller: Broadcom Corporation BCM4310 UART (rev 01)
>         Subsystem: Dell Unknown device 0007
>         Flags: bus master, fast devsel, latency 0, IRQ 17
>         Memory at efdfc000 (32-bit, non-prefetchable) [size=16K]
>         Capabilities: [40] Power Management version 2
>         Capabilities: [58] Message Signalled Interrupts: 64bit- Queue=0/0 Enable-
>         Capabilities: [d0] Express Legacy Endpoint IRQ 0
>         Capabilities: [100] Advanced Error Reporting
>         Capabilities: [13c] Virtual Channel
> 
> [root@localhost proski]# lspci -n -s 0c:00.0
> 0c:00.0 0280: 14e4:4312 (rev 01)
> [root@localhost proski]#
> 
> P.S.  Second attempt, this time with "pio=1" parameter.  At least it
> didn't crash, but it would not work either:

Does it work with linville's tree (in DMA mode)?

-- 
Greetings Michael.