diff options
author | adrian <adrian@FreeBSD.org> | 2015-09-21 02:30:22 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2015-09-21 02:30:22 +0000 |
commit | 5a9535253641d6a90a7abe8eea2f06af2800f56a (patch) | |
tree | 19baee59646196d711e972793cc7491d45a5b177 /contrib/libc++/src/system_error.cpp | |
parent | 514b6ff28ef4dbfdc2e12863e6b8199e91c41936 (diff) | |
download | FreeBSD-src-5a9535253641d6a90a7abe8eea2f06af2800f56a.zip FreeBSD-src-5a9535253641d6a90a7abe8eea2f06af2800f56a.tar.gz |
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.
Diffstat (limited to 'contrib/libc++/src/system_error.cpp')
0 files changed, 0 insertions, 0 deletions