request for help: 'fixing' the 802.11 TX path

Adrian Chadd adrian at freebsd.org
Wed Oct 31 06:42:36 UTC 2012


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
if_transmit() land.

Thanks everyone,




Adrian


More information about the freebsd-wireless mailing list