2012-01-12 16:38:04

by Ben Gardner

[permalink] [raw]
Subject: ath5k: no interrupts

I am using Atheros AR5414 card in a custom Geode LX-based board.
It is a mini-PCI card with PCI ID 168c:001b.

Under the 2.6.25 kernel, the ath5k driver works.
Under the 3.0.9 and 3.2.0 kernels, the card does not work.
By 'does not work' I mean that it can't find any access points. ?After digging
a bit, it looks like interrupts are not occurring.

Here is a snippet of the kernel log (Geode LX/3.0.9):
[ ? ?1.712119] cfg80211: Calling CRDA to update world regulatory domain
[ ? ?1.801089] ath5k 0000:00:0c.0: PCI INT A -> Link[LNKA] -> GSI 10
(level, low) -> IRQ 10
[ ? ?1.801270] ath5k 0000:00:0c.0: registered as 'phy0'
[ ? ?2.468139] ath: EEPROM regdomain: 0x0
[ ? ?2.468158] ath: EEPROM indicates default country code should be used
[ ? ?2.468176] ath: doing EEPROM country->regdmn map search
[ ? ?2.468200] ath: country maps to regdmn code: 0x3a
[ ? ?2.468217] ath: Country alpha2 being used: US
[ ? ?2.468233] ath: Regpair used: 0x3a
[ ? ?2.468862] ieee80211 phy0: Selected rate control algorithm 'pid'
[ ? ?2.471545] ath5k phy0: Atheros AR5414 chip found (MAC: 0xa5, PHY: 0x61)

~ # cat /proc/interrupts
? ? ? ? ? CPU0
?0: ? ? ?43630 ? ?XT-PIC-XT-PIC ? ?timer
?2: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?cascade
?3: ? ? ? ? ?1 ? ?XT-PIC-XT-PIC
?4: ? ? ? ? ?1 ? ?XT-PIC-XT-PIC
?8: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?rtc0
?9: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?acpi
10: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?ath
11: ? ? ? 2373 ? ?XT-PIC-XT-PIC ? ?ehci_hcd:usb1, ohci_hcd:usb2, eth0
14: ? ? ? ?418 ? ?XT-PIC-XT-PIC ? ?pata_cs5536
NMI: ? ? ? ? ?0 ? Non-maskable interrupts
LOC: ? ? ? ? ?0 ? Local timer interrupts
SPU: ? ? ? ? ?0 ? Spurious interrupts
PMI: ? ? ? ? ?0 ? Performance monitoring interrupts
IWI: ? ? ? ? ?0 ? IRQ work interrupts
ERR: ? ? ? ? ?0
MIS: ? ? ? ? ?0

The 'registers' from debugfs show that an interrupt is pending.
~ # cat /debug/ieee80211/phy1/ath5k/registers
AR5K_CR ? ? ? ? ? ? ? ? ?0x00000004
AR5K_RXDP ? ? ? ? ? ? ? ?0x1f3524e0
AR5K_CFG ? ? ? ? ? ? ? ? 0x00000100
AR5K_IER ? ? ? ? ? ? ? ? 0x00000001
AR5K_BCR ? ? ? ? ? ? ? ? 0x00000000
AR5K_RTSD0 ? ? ? ? ? ? ? 0x00000000
AR5K_RTSD1 ? ? ? ? ? ? ? 0x00000000
AR5K_TXCFG ? ? ? ? ? ? ? 0x00000015
AR5K_RXCFG ? ? ? ? ? ? ? 0x00000005
AR5K_RXJLA ? ? ? ? ? ? ? 0x1f3524f0
AR5K_MIBC ? ? ? ? ? ? ? ?0x00000001
AR5K_TOPS ? ? ? ? ? ? ? ?0x00000008
AR5K_RXNOFRM ? ? ? ? ? ? 0x00000000
AR5K_TXNOFRM ? ? ? ? ? ? 0x00000000
AR5K_RPGTO ? ? ? ? ? ? ? 0x00000000
AR5K_RFCNT ? ? ? ? ? ? ? 0x0000001f
AR5K_MISC ? ? ? ? ? ? ? ?0x00000000
AR5K_QCUDCU_CLKGT ? ? ? ?0x00de96a1
AR5K_ISR ? ? ? ? ? ? ? ? 0x00000000
AR5K_PISR ? ? ? ? ? ? ? ?0x00045005
AR5K_SISR0 ? ? ? ? ? ? ? 0x00000000
AR5K_SISR1 ? ? ? ? ? ? ? 0x00000000
AR5K_SISR2 ? ? ? ? ? ? ? 0x88800000
AR5K_SISR3 ? ? ? ? ? ? ? 0x00000000
AR5K_SISR4 ? ? ? ? ? ? ? 0x00000000
AR5K_IMR ? ? ? ? ? ? ? ? 0x00000000
AR5K_PIMR ? ? ? ? ? ? ? ?0x800814b5
AR5K_SIMR0 ? ? ? ? ? ? ? 0x00cf0000
AR5K_SIMR1 ? ? ? ? ? ? ? 0x004f0000
AR5K_SIMR2 ? ? ? ? ? ? ? 0x00070000
AR5K_SIMR3 ? ? ? ? ? ? ? 0x00000000
AR5K_SIMR4 ? ? ? ? ? ? ? 0x00000000
AR5K_DCM_ADDR ? ? ? ? ? ?0x00000012
AR5K_DCCFG ? ? ? ? ? ? ? 0x00000000
AR5K_CCFG ? ? ? ? ? ? ? ?0x00000000
AR5K_CPC0 ? ? ? ? ? ? ? ?0x00000000
AR5K_CPC1 ? ? ? ? ? ? ? ?0x00000000
AR5K_CPC2 ? ? ? ? ? ? ? ?0x00000000
AR5K_CPC3 ? ? ? ? ? ? ? ?0x00000000
AR5K_CPCOVF ? ? ? ? ? ? ?0x00000000
AR5K_RESET_CTL ? ? ? ? ? 0x00000000
AR5K_SLEEP_CTL ? ? ? ? ? 0x00000000
AR5K_INTPEND ? ? ? ? ? ? 0x00000001
AR5K_SFR ? ? ? ? ? ? ? ? 0x00000000
AR5K_PCICFG ? ? ? ? ? ? ?0x00000014
AR5K_GPIOCR ? ? ? ? ? ? ?0x00008000
AR5K_GPIODO ? ? ? ? ? ? ?0x00000001
AR5K_SREV ? ? ? ? ? ? ? ?0x000000a5


For comparison, I also have an older Geode GX-based board with the same Atheros
card. ?The exact same 3.0.9 image works just fine on that board.
Here is the same group of kernel logs:
[ ? ?6.033111] cfg80211: Calling CRDA to update world regulatory domain
[ ? ?6.455114] ath5k 0000:00:0d.0: guessed PCI INT A -> IRQ 11
[ ? ?6.455965] ath5k 0000:00:0d.0: registered as 'phy0'
[ ? ?7.228768] ath: EEPROM regdomain: 0x0
[ ? ?7.228800] ath: EEPROM indicates default country code should be used
[ ? ?7.228828] ath: doing EEPROM country->regdmn map search
[ ? ?7.228865] ath: country maps to regdmn code: 0x3a
[ ? ?7.228893] ath: Country alpha2 being used: US
[ ? ?7.228918] ath: Regpair used: 0x3a
[ ? ?7.230164] ieee80211 phy0: Selected rate control algorithm 'pid'
[ ? ?7.234204] ath5k phy0: Atheros AR5414 chip found (MAC: 0xa5, PHY: 0x61)

The only significant difference is the line that shows the IRQ.


At this point, I'm not sure if this is a problem with the ath5k driver or with
the something else that changed in the kernel between the two versions, or with
the CPU board itself.

I have not yet done a bisect to see when the driver stopped working on the LX.
I plan to do that next.

Any suggestions as to what to look for would be helpful.

Thanks,
Ben


2012-01-13 16:32:18

by Ben Gardner

[permalink] [raw]
Subject: Re: ath5k: no interrupts

My issue had to do with broken ACPI on the LX board.
After disabling ACPI, the driver works perfectly.

Ben

On Thu, Jan 12, 2012 at 10:38 AM, Ben Gardner <[email protected]> wrote:
> I am using Atheros AR5414 card in a custom Geode LX-based board.
> It is a mini-PCI card with PCI ID 168c:001b.
>
> Under the 2.6.25 kernel, the ath5k driver works.
> Under the 3.0.9 and 3.2.0 kernels, the card does not work.
> By 'does not work' I mean that it can't find any access points. ?After digging
> a bit, it looks like interrupts are not occurring.
>
> Here is a snippet of the kernel log (Geode LX/3.0.9):
> [ ? ?1.712119] cfg80211: Calling CRDA to update world regulatory domain
> [ ? ?1.801089] ath5k 0000:00:0c.0: PCI INT A -> Link[LNKA] -> GSI 10
> (level, low) -> IRQ 10
> [ ? ?1.801270] ath5k 0000:00:0c.0: registered as 'phy0'
> [ ? ?2.468139] ath: EEPROM regdomain: 0x0
> [ ? ?2.468158] ath: EEPROM indicates default country code should be used
> [ ? ?2.468176] ath: doing EEPROM country->regdmn map search
> [ ? ?2.468200] ath: country maps to regdmn code: 0x3a
> [ ? ?2.468217] ath: Country alpha2 being used: US
> [ ? ?2.468233] ath: Regpair used: 0x3a
> [ ? ?2.468862] ieee80211 phy0: Selected rate control algorithm 'pid'
> [ ? ?2.471545] ath5k phy0: Atheros AR5414 chip found (MAC: 0xa5, PHY: 0x61)
>
> ~ # cat /proc/interrupts
> ? ? ? ? ? CPU0
> ?0: ? ? ?43630 ? ?XT-PIC-XT-PIC ? ?timer
> ?2: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?cascade
> ?3: ? ? ? ? ?1 ? ?XT-PIC-XT-PIC
> ?4: ? ? ? ? ?1 ? ?XT-PIC-XT-PIC
> ?8: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?rtc0
> ?9: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?acpi
> 10: ? ? ? ? ?0 ? ?XT-PIC-XT-PIC ? ?ath
> 11: ? ? ? 2373 ? ?XT-PIC-XT-PIC ? ?ehci_hcd:usb1, ohci_hcd:usb2, eth0
> 14: ? ? ? ?418 ? ?XT-PIC-XT-PIC ? ?pata_cs5536
> NMI: ? ? ? ? ?0 ? Non-maskable interrupts
> LOC: ? ? ? ? ?0 ? Local timer interrupts
> SPU: ? ? ? ? ?0 ? Spurious interrupts
> PMI: ? ? ? ? ?0 ? Performance monitoring interrupts
> IWI: ? ? ? ? ?0 ? IRQ work interrupts
> ERR: ? ? ? ? ?0
> MIS: ? ? ? ? ?0
>
> The 'registers' from debugfs show that an interrupt is pending.
> ~ # cat /debug/ieee80211/phy1/ath5k/registers
> AR5K_CR ? ? ? ? ? ? ? ? ?0x00000004
> AR5K_RXDP ? ? ? ? ? ? ? ?0x1f3524e0
> AR5K_CFG ? ? ? ? ? ? ? ? 0x00000100
> AR5K_IER ? ? ? ? ? ? ? ? 0x00000001
> AR5K_BCR ? ? ? ? ? ? ? ? 0x00000000
> AR5K_RTSD0 ? ? ? ? ? ? ? 0x00000000
> AR5K_RTSD1 ? ? ? ? ? ? ? 0x00000000
> AR5K_TXCFG ? ? ? ? ? ? ? 0x00000015
> AR5K_RXCFG ? ? ? ? ? ? ? 0x00000005
> AR5K_RXJLA ? ? ? ? ? ? ? 0x1f3524f0
> AR5K_MIBC ? ? ? ? ? ? ? ?0x00000001
> AR5K_TOPS ? ? ? ? ? ? ? ?0x00000008
> AR5K_RXNOFRM ? ? ? ? ? ? 0x00000000
> AR5K_TXNOFRM ? ? ? ? ? ? 0x00000000
> AR5K_RPGTO ? ? ? ? ? ? ? 0x00000000
> AR5K_RFCNT ? ? ? ? ? ? ? 0x0000001f
> AR5K_MISC ? ? ? ? ? ? ? ?0x00000000
> AR5K_QCUDCU_CLKGT ? ? ? ?0x00de96a1
> AR5K_ISR ? ? ? ? ? ? ? ? 0x00000000
> AR5K_PISR ? ? ? ? ? ? ? ?0x00045005
> AR5K_SISR0 ? ? ? ? ? ? ? 0x00000000
> AR5K_SISR1 ? ? ? ? ? ? ? 0x00000000
> AR5K_SISR2 ? ? ? ? ? ? ? 0x88800000
> AR5K_SISR3 ? ? ? ? ? ? ? 0x00000000
> AR5K_SISR4 ? ? ? ? ? ? ? 0x00000000
> AR5K_IMR ? ? ? ? ? ? ? ? 0x00000000
> AR5K_PIMR ? ? ? ? ? ? ? ?0x800814b5
> AR5K_SIMR0 ? ? ? ? ? ? ? 0x00cf0000
> AR5K_SIMR1 ? ? ? ? ? ? ? 0x004f0000
> AR5K_SIMR2 ? ? ? ? ? ? ? 0x00070000
> AR5K_SIMR3 ? ? ? ? ? ? ? 0x00000000
> AR5K_SIMR4 ? ? ? ? ? ? ? 0x00000000
> AR5K_DCM_ADDR ? ? ? ? ? ?0x00000012
> AR5K_DCCFG ? ? ? ? ? ? ? 0x00000000
> AR5K_CCFG ? ? ? ? ? ? ? ?0x00000000
> AR5K_CPC0 ? ? ? ? ? ? ? ?0x00000000
> AR5K_CPC1 ? ? ? ? ? ? ? ?0x00000000
> AR5K_CPC2 ? ? ? ? ? ? ? ?0x00000000
> AR5K_CPC3 ? ? ? ? ? ? ? ?0x00000000
> AR5K_CPCOVF ? ? ? ? ? ? ?0x00000000
> AR5K_RESET_CTL ? ? ? ? ? 0x00000000
> AR5K_SLEEP_CTL ? ? ? ? ? 0x00000000
> AR5K_INTPEND ? ? ? ? ? ? 0x00000001
> AR5K_SFR ? ? ? ? ? ? ? ? 0x00000000
> AR5K_PCICFG ? ? ? ? ? ? ?0x00000014
> AR5K_GPIOCR ? ? ? ? ? ? ?0x00008000
> AR5K_GPIODO ? ? ? ? ? ? ?0x00000001
> AR5K_SREV ? ? ? ? ? ? ? ?0x000000a5
>
>
> For comparison, I also have an older Geode GX-based board with the same Atheros
> card. ?The exact same 3.0.9 image works just fine on that board.
> Here is the same group of kernel logs:
> [ ? ?6.033111] cfg80211: Calling CRDA to update world regulatory domain
> [ ? ?6.455114] ath5k 0000:00:0d.0: guessed PCI INT A -> IRQ 11
> [ ? ?6.455965] ath5k 0000:00:0d.0: registered as 'phy0'
> [ ? ?7.228768] ath: EEPROM regdomain: 0x0
> [ ? ?7.228800] ath: EEPROM indicates default country code should be used
> [ ? ?7.228828] ath: doing EEPROM country->regdmn map search
> [ ? ?7.228865] ath: country maps to regdmn code: 0x3a
> [ ? ?7.228893] ath: Country alpha2 being used: US
> [ ? ?7.228918] ath: Regpair used: 0x3a
> [ ? ?7.230164] ieee80211 phy0: Selected rate control algorithm 'pid'
> [ ? ?7.234204] ath5k phy0: Atheros AR5414 chip found (MAC: 0xa5, PHY: 0x61)
>
> The only significant difference is the line that shows the IRQ.
>
>
> At this point, I'm not sure if this is a problem with the ath5k driver or with
> the something else that changed in the kernel between the two versions, or with
> the CPU board itself.
>
> I have not yet done a bisect to see when the driver stopped working on the LX.
> I plan to do that next.
>
> Any suggestions as to what to look for would be helpful.
>
> Thanks,
> Ben