2008-12-10 05:13:57

by Patrick McHardy

[permalink] [raw]
Subject: [RFC]: ath5k: enable TXOK IRQ

I tried to use ath5k in AP mode with hostapd, but hostapd never
added the authenticated and associated stations to the kernel.
The reason is that ath5k didn't invoke the tx tasklet, so it
did not call the ieee80211_tx_status() function and userspace
didn't receive the radiotap message indicating success.

The root cause appears to be that the TXOK interrupt is not
enabled, so the tasklet is never scheduled. I'm not sure whether
TXOK is really the correct one to handle ! IEEE80211_TX_CTL_NO_ACK,
but it fixes the problem for me.



Attachments:
02.diff (980.00 B)

2008-12-17 15:45:18

by John W. Linville

[permalink] [raw]
Subject: Re: [RFC]: ath5k: enable TXOK IRQ

On Wed, Dec 10, 2008 at 06:13:52AM +0100, Patrick McHardy wrote:
> I tried to use ath5k in AP mode with hostapd, but hostapd never
> added the authenticated and associated stations to the kernel.
> The reason is that ath5k didn't invoke the tx tasklet, so it
> did not call the ieee80211_tx_status() function and userspace
> didn't receive the radiotap message indicating success.
>
> The root cause appears to be that the TXOK interrupt is not
> enabled, so the tasklet is never scheduled. I'm not sure whether
> TXOK is really the correct one to handle ! IEEE80211_TX_CTL_NO_ACK,
> but it fixes the problem for me.

Any comments from the ath5k "usual suspects" on this one?

John
--
John W. Linville Linux should be at the core
[email protected] of your literate lifestyle.

2008-12-17 16:52:39

by Nick Kossifidis

[permalink] [raw]
Subject: Re: [RFC]: ath5k: enable TXOK IRQ

2008/12/10 Patrick McHardy <[email protected]>:
> I tried to use ath5k in AP mode with hostapd, but hostapd never
> added the authenticated and associated stations to the kernel.
> The reason is that ath5k didn't invoke the tx tasklet, so it
> did not call the ieee80211_tx_status() function and userspace
> didn't receive the radiotap message indicating success.
>
> The root cause appears to be that the TXOK interrupt is not
> enabled, so the tasklet is never scheduled. I'm not sure whether
> TXOK is really the correct one to handle ! IEEE80211_TX_CTL_NO_ACK,
> but it fixes the problem for me.
>

Can you put a simple printk on get_isr to see what interrupts are you getting ?

Your patch sets TXOK interrupt on the secondary interrupt mask
register but if you don't enable
TXOK on the primary imr you won't get any...

2236 sc->imask = AR5K_INT_RXOK | AR5K_INT_RXERR | AR5K_INT_RXEOL |
2237 AR5K_INT_RXORN | AR5K_INT_TXDESC | AR5K_INT_TXEOL |
2238 AR5K_INT_FATAL | AR5K_INT_GLOBAL | AR5K_INT_MIB;

...so this is weird, you shouldn't get any txok interrupt even with
your patch. Txdesc/txeol should be enough.

--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick