diff options
author | sephe <sephe@FreeBSD.org> | 2016-01-12 01:30:51 +0000 |
---|---|---|
committer | sephe <sephe@FreeBSD.org> | 2016-01-12 01:30:51 +0000 |
commit | b493955d70f7db2ca259d1243bc39bc21c749c7b (patch) | |
tree | 1fd01ea872027c24d03fc66d12b2d25e12704824 /sys/boot/efi/loader/autoload.c | |
parent | 35f5091fba85d82f9564c381a5b0e430aaeacfd4 (diff) | |
download | FreeBSD-src-b493955d70f7db2ca259d1243bc39bc21c749c7b.zip FreeBSD-src-b493955d70f7db2ca259d1243bc39bc21c749c7b.tar.gz |
hyperv/hn: Implement LRO
- Implement the LRO using tcp_lro APIs, and LRO is enabled by default.
- Add several stats sysctl nodes.
- Check IP/TCP length before sending the packet to tcp_lro_rx(), if host
does not provide RX csum information (*); and add an option through
sysctl to always trust host TCP segment csum checks (default is off).
- Add sysctl to control the LRO entry depth; it is disabled by default.
It is used to avoid holding too much TCP segments in driver. Limiting
the LRO entry depth helps a lot in a one/two streams RX test.
This one 3x the RX performance on my local test (3Gbps -> 10Gbps), and
~2x the RX performance over a directly connected 40Ge network (5Gbps ->
9Gbps).
(*) It seems the host stops supplying csum information, once the network
load is high. This still needs investigation...
Reviewed by: Hongjiang Zhang <honzhan microsoft com>,
Dexuan Cui <decui microsoft com>,
Jun Su <junsu microsoft com>,
delphij
Tested by: me (local),
Hongjiang Zhang <honzhan microsoft com>
(directly connected 40Ge)
Approved by: delphij (mentor), adrian (mentor, no objection)
With feedback from: delphij, Hongjiang Zhang <honzhan microsoft com>
Sponsored by: Microsoft OSTC
Differential Revision: https://reviews.freebsd.org/D4824
Diffstat (limited to 'sys/boot/efi/loader/autoload.c')
0 files changed, 0 insertions, 0 deletions