Here's the patch:
* break out the per-packet send code into ieee80211_start_pkt()
* introduce a per-vap TX lock
* wrap the normal TX path ieee80211_encap(), parent->if_transmit and
ic->ic_raw_xmit with the TX lock
* the rest of the encap calls need to be wrapped in the TX lock - wds,
* the TX lock is not re-entrant but the TX path itself is (eg start ->
start aggregation -> addba send -> mgmt_send -> (re) grab lock) so a
bunch of this stuff needs to be rethought to be "clean" locking wise.
I bet wds, superg and mesh is being called from the normal TX path and
thus could be called with the TX lock already held. I should
* the TX aggregation state code should be protected by a lock - do that later?
* add some lock / unlock assertion checks (eg assert the TX lock is
held in ieee80211_encap()) and debug what code paths are / aren't
I'm still testing this. I've only tested it in STA mode thus far (iwn and ath.)
email@example.com mailing list
To unsubscribe, send any mail to "freebsd-wireless-unsubscr...@freebsd.org"