Convert if_rsu to use a deferred transmit task rather than using rsu_start()
to do it directly.
Ensure that we re-queue starting transmit upon TX completion.
This solves two issues:
- It stops tx stalls - before this, if the transmit path filled the mbuf queue then it'd never start another transmit.
- It enforces ordering - this is very required for 802.11n which requires frames to be transmitted in the order they're queued. Since everything remotely involved in USB has an unlock/thing/relock pattern with that mutex, the only way to guarantee TX ordering is to 100% defer it into a separate thread.
This now survives an iperf test and gets a reliable 30mbit/sec.