[patch] if_ath_tx: change interrupt scheduling deferral

Berislav Purgar bpurgar at gmail.com
Sat Sep 10 16:48:27 UTC 2011


On Sat, Sep 10, 2011 at 2:24 PM, Adrian Chadd <adrian at freebsd.org> wrote:

> Hi,
>
> This patch changes how the deferred interrupt handling works. It's
> likely I'll have to change things a bit before I commit it so I won't
> be (yet) committing this.
> It brings the interrupt handling in line with how ath9k and the
> reference driver works. It eliminates a possible race condition:
>
> * ath_intr() and ath_hal_getisr() set AH5212(ah)->ah_intrTxqs, which
> is a bitmap of TXQs which need servicing;
> * The ath TX processes call txqactive() which check the above bitmap
> and clear the bit that's been tested.
>
> The interrupt handler ath_intr() can be called during the TX
> completion task, so I think it's possible that the interrupt could
> occur, setting a TXQ bit, in between txqactive()'s "check bit X" and
> "clear bit X".
> My testing was only showing up one queue hang every 20-50 million
> packets where the TXQ had active packets in it which were completed,
> but hadn't been processed.
>
> I've only just begun testing this. I'll post updates as they're needed.
>
> Thanks,
>
>
> Adrian
>
> _______________________________________________
> freebsd-wireless at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-wireless
> To unsubscribe, send any mail to "freebsd-wireless-unsubscribe at freebsd.org
> "
>
> Hello Adrian

i tested new patches and can tell that works ok. i don't see any error
messages  in logfile for both cards (high trafic load). regarding to
anything i tested (HT20/40) iperf shows
TCP ~ 9.8MB/s  UPD ~ 13MB/s  on HT/20 .
TCP ~ 13MB/s   UDP ~ 19.7MB/s on HT/40

this results are when AR5416 act as iperf server and AR9280 as client, in
another case results are worse.
AR5416 works in sta and AR9280 in hostap mode.
that's all for now :)

Beri


More information about the freebsd-wireless mailing list