Added Generic Segmentation Offload support for UDP protocol. #921
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Generic Segmentation Offload allows you to reduce the load on the CPU by transferring routine work from the kernel to the network card. This option is activated using the key "--udp-gso N", where "N' is the segment size.
Linux kernel began supporting UDP GSO from version 4.18.0. Also it could be software or hardware supporting. Hardware supporting could be only if network card and its driver are supporting UDP GSO. You may check it using "ethtool -k " - find "tx-udp-segmentation" parameter. If it equals "on" - hardware supporting is enabled, if "off" - disabled, if "off [fixed] - your interface doesn't support GSO".
e.g. On the AQC107 10Gbps card, that supports UDP GSO, CPU loading is falling from 100% to 25% (about these values). Bitrate is increasing from 300Mbps to 2.6Gbps (about these values) - comparing "-l 100" and "-l 6400 --udp-gso 100".
PLEASE NOTE the following text from the iperf3 license. Submitting a
pull request to the iperf3 repository constitutes "[making]
Enhancements available...publicly":
The complete iperf3 license is available in the
LICENSEfile in thetop directory of the iperf3 source tree.
masteror3.1-STABLE) to which this pull request applies: latest