Re: atheros panic (D-Link DWL-G520)

From: Sam Leffler <sam_at_errno.com>
Date: Sat, 29 Sep 2007 09:17:34 -0700
Weongyo Jeong wrote:
> On Fri, Sep 28, 2007 at 08:25:24PM -0700, Sam Leffler wrote:
>   
>> Weongyo Jeong wrote:
>>     
>>> My device is D-Link DWL-G520 and the device encountered a panic when I
>>> did `ifconfig ath0 up'.  The kernel was cvs-uped yesterday. The following
>>> are the panic message:
>>>
>>> hostap# ifconfig ath0 up
>>> ath0: ath_chan_set: unable to reset channel 1 (2412 Mhz, flags 0x480 hal
>>> flags 0xc0)
>>> hostap# ath0: ath_chan_set: unable to reset channel 11 (2462 Mhz, flags
>>> 0x480 hal flags 0xc0)
>>> ath0: ath_chan_set: unable to reset channel 13 (2472 Mhz, flags 0x480
>>> hal flags 0xc0)
>>> ath0: ath_chan_set: unable to reset channel 3 (2422 Mhz, flags 0x480 hal
>>> flags 0xc0)
>>> ath0: ath_chan_set: unable to reset channel 8 (2447 Mhz, flags 0x480 hal
>>> flags 0xc0)
>>> ath0: hardware error; resetting
>>> ath0: 0x00080000 0x00000000 0x00000000, 0x00010000 0x00000000 0x00000000
>>>
>>>
>>> Fatal trap 18: integer divide fault while in kernel mode
>>> cpuid = 0; apic id = 00
>>> instruction pointer     = 0x20:0xc09f0d25
>>> stack pointer           = 0x28:0xcbd3acd8
>>> frame pointer           = 0x28:0xcbd3acd8
>>> code segment            = base 0x0, limit 0xfffff, type 0x1b
>>>                         = DPL 0, pres 1, def32 1, gran 1
>>> processor eflags        = interrupt enabled, IOPL = 0
>>> current process         = 11 (idle: cpu0)
>>> [thread pid 11 tid 100004 ]
>>> Stopped at      cpu_idle_default+0x5:   popl    %ebp
>>> db> bt
>>> Tracing pid 11 tid 100004 td 0xc20f7630
>>> cpu_idle_default(cbd3acf8,c0769e17,c0bad610,2,c0a9a19d,...) at
>>> cpu_idle_default+0x5
>>> cpu_idle(c0bad610,2,c0a9a19d,562,cbd3ad24,...) at cpu_idle+0x28
>>> sched_idletd(0,cbd3ad38,c0a9515d,314,c20f6aa0,...) at sched_idletd+0x37
>>> fork_exit(c0769de0,0,cbd3ad38) at fork_exit+0xb8
>>> fork_trampoline() at fork_trampoline+0x8
>>> --- trap 0, eip = 0, esp = 0xcbd3ad70, ebp = 0 ---
>>> db>
>>>
>>>
>>> And the below informations are device informations:
>>>
>>> hostap# uname -a
>>> FreeBSD hostap 7.0-CURRENT FreeBSD 7.0-CURRENT #1: Thu Sep 27 02:43:04
>>> KST 2007     root_at_rumhostap:/usr/obj/usr/src/sys/GENERIC  i386
>>>
>>> hostap# pciconf -lcv
>>> ath0_at_pci2:2:0:  class=0x020000 card=0x3a131186 chip=0x0013168c rev=0x01
>>> hdr=0x00
>>>     vendor     = 'Atheros Communications Inc.'
>>>     device     = 'AR5212, AR5213 802.11a/b/g Wireless Adapter'
>>>     class      = network
>>>     subclass   = ethernet
>>>     cap 01[44] = powerspec 2  supports D0 D3  current D0
>>>
>>> hostap# sysctl -a | grep dev.ath.0
>>> dev.ath.0.%desc: Atheros 5212
>>> dev.ath.0.%driver: ath
>>> dev.ath.0.%location: slot=2 function=0
>>> dev.ath.0.%pnpinfo: vendor=0x168c device=0x0013 subvendor=0x1186
>>> subdevice=0x3a13 class=0x020000
>>> dev.ath.0.%parent: pci2
>>> dev.ath.0.smoothing_rate: 95
>>> dev.ath.0.sample_rate: 10
>>> dev.ath.0.countrycode: 0
>>> dev.ath.0.regdomain: 48
>>> dev.ath.0.slottime: 9
>>> dev.ath.0.acktimeout: 96
>>> dev.ath.0.ctstimeout: 96
>>> dev.ath.0.softled: 0
>>> dev.ath.0.ledpin: 0
>>> dev.ath.0.ledon: 0
>>> dev.ath.0.ledidle: 2700
>>> dev.ath.0.txantenna: 0
>>> dev.ath.0.rxantenna: 0
>>> dev.ath.0.diversity: 0
>>> dev.ath.0.txintrperiod: 5
>>> dev.ath.0.diag: 0
>>> dev.ath.0.tpscale: 0
>>> dev.ath.0.tpc: 0
>>> dev.ath.0.tpack: 63
>>> dev.ath.0.tpcts: 63
>>> dev.ath.0.fftxqmin: 2
>>> dev.ath.0.fftxqmax: 50
>>> dev.ath.0.monpass: 24
>>>
>>> hostap# ifconfig ath0 list channel
>>> Channel   1 : 2412  Mhz 11g          Channel   8 : 2447  Mhz 11g          
>>> Channel   2 : 2417  Mhz 11g          Channel   9 : 2452  Mhz 11g          
>>> Channel   3 : 2422  Mhz 11g          Channel  10 : 2457  Mhz 11g          
>>> Channel   4 : 2427  Mhz 11g          Channel  11 : 2462  Mhz 11g          
>>> Channel   5 : 2432  Mhz 11g          Channel  12 : 2467  Mhz 11g          
>>> Channel   6 : 2437  Mhz 11g Turbo    Channel  13 : 2472  Mhz 11g          
>>> Channel   7 : 2442  Mhz 11g          
>>>
>>> stap# /sbin/ifconfig 
>>> ath0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
>>>         ether 00:1b:11:1a:ee:32
>>>         media: IEEE 802.11 Wireless Ethernet autoselect (autoselect)
>>>         status: no carrier
>>>         ssid "" channel 1 (2412 Mhz 11b)
>>>         authmode OPEN privacy OFF txpowmax 100 bmiss 7 scanvalid 60 bgscan
>>>         bgscanintvl 300 bgscanidle 250 roam:rssi11b 14 roam:rate11b 1 burst
>>>
>>> hostap# dmesg | grep -i ath
>>> ath_hal: 0.9.20.3 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
>>> ath0: <Atheros 5212> mem 0xe7000000-0xe700ffff irq 11 at device 2.0 on pci2
>>> ath0: [ITHREAD]
>>> ath0: using obsoleted if_watchdog interface
>>> ath0: Ethernet address: 00:1b:11:1a:ee:32
>>> ath0: mac 7.9 phy 4.5 radio 5.6
>>>       
>> Unfortunately the value of status isn't printed when the ath_hal_reset
>> calls fail.  Please add that to the printf in ath_chan_set.
>>
>> Not sure where the divide fault comes from; the stack trace doesn't
>> provide much help.  If you don't have INVARIANTS enabled you should do
>> that in case it catches what's going on before the panic happens.
>>     
>
> The status value which is returned by ath_hal_reset() (if_ath.c 5043
> line) was 3 (HAL_EIO) and the kernel was compiled with INVARIANTS.
>   

The hal couldn't talk to the device as expected.  This could be any 
number of problems but is almost certain to be unrelated to the driver 
(e.g. cardbus, acpi, memory mapping, bad card).

    Sam
Received on Sat Sep 29 2007 - 14:17:37 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:18 UTC