So I cheaped out for now and just wrapped the ath TX path in a new TX only lock.
I'm open to other suggestions about how to make the "queue everything
through a taskqueue" work, but unfortunately it seems that I'm
defeated by the inner workings of the network stack locking and how
that plays with the scheduler.
I even tried experimenting with a second taskqueue just for TX but it
still suffered from much reduced performance.
The annoying thing? Changing the eventtimer to enable
periodic+idletick improved performance as well as flipping
machdep.idle=spin. I thought that stuff was fixed but alas.
So now this is done, I may create a per-VAP TX lock in net80211 in
order to serialise raw and normal net80211 TX; that will fix a lot of
the the serialisation and state issues that creep up. Then it's off to
email@example.com mailing list
To unsubscribe, send any mail to "freebsd-wireless-unsubscr...@freebsd.org"