: ath5k: enable TXOK IRQ
RFC 1/1 : 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.
commit 5ecbb104a7202a6ed9bcfa8b8ef46474d1003600
Author: Patrick McHardy <[email protected]> Date: Tue Dec 9 21:54:51 2008 +0100
ath5k: enable TXOK IRQ
Without the IRQ, the tx tasklet is not scheduled, which is necessary to invoke ieee80211_tx_status() to notify userspace of successfully sent frames.
drivers/net/wireless/ath5k/base.c +2 -1
@@ -1348,7 +1348,8 @@ ath5k_txq_setup(struct ath5k_softc *sc,* up in which case the top half of the kernel may backup * due to a lack of tx descriptors. */ - qi.tqi_flags =AR5K_TXQ_FLAG_TXEOLINT_ENABLE | + qi.tqi_flags =AR5K_TXQ_FLAG_TXOKINT_ENABLE | +AR5K_TXQ_FLAG_TXEOLINT_ENABLE |AR5K_TXQ_FLAG_TXDESCINT_ENABLE ; qnum =ath5k_hw_setup_tx_queue (ah, qtype, &qi);if (qnum <0 ) {
Quoted 10 lines · Patrick McHardy
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
Signature · 2 lines
John W. Linville Linux should be at the core [email protected] of your literate lifestyle.
2008/12/10 Patrick McHardy <[email protected]>:
Quoted 11 lines
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.
Signature · 3 lines
GPG ID: 0xD21DB2DB As you read this post global entropy rises. Have Fun ;-) Nick