Hi, 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 TODO: * the rest of the encap calls need to be wrapped in the TX lock - wds, superg, mesh. * 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 investigate this! * 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 being engaged. I'm still testing this. I've only tested it in STA mode thus far (iwn and ath.) thanks, Adrian Adrian _______________________________________________ freebsd-wireless@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-wireless To unsubscribe, send any mail to "freebsd-wireless-unsubscr...@freebsd.org"