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 <kaber@xxxxxxxxx> 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. Signed-off-by: Patrick McHardy <kaber@xxxxxxxxx> diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c index 940c724..291a334 100644 --- a/drivers/net/wireless/ath5k/base.c +++ b/drivers/net/wireless/ath5k/base.c @@ -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) {