
On 09/24/2014 01:24 AM, John Ferlan wrote:
On 09/18/2014 10:15 AM, Ján Tomko wrote:
Add options for tuning segment offloading: <driver> <host csum='off' gso='off' tso4='off' tso6='off' ecn='off' ufo='off'/> <guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/> </driver> which control the respective host_ and guest_ properties of the virtio-net device. --- docs/formatdomain.html.in | 24 ++- docs/schemas/domaincommon.rng | 44 ++++- src/conf/domain_conf.c | 218 ++++++++++++++++++++- src/conf/domain_conf.h | 15 ++ .../qemuxml2argv-net-virtio-disable-offloads.xml | 35 ++++ tests/qemuxml2xmltest.c | 1 + 6 files changed, 329 insertions(+), 8 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-net-virtio-disable-offloads.xml
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 8c03ebb..5dd70a4 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -3868,7 +3868,11 @@ qemu-kvm -net nic,model=? /dev/null <source network='default'/> <target dev='vnet1'/> <model type='virtio'/> - <b><driver name='vhost' txmode='iothread' ioeventfd='on' event_idx='off' queues='5'/></b> + <b><driver name='vhost' txmode='iothread' ioeventfd='on' event_idx='off' queues='5'> + <host csum='off' gso='off' tso4='off' tso6='off' ecn='off' ufo='off'/> + <guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/> + </driver> + </b> </interface> </devices> ...</pre> @@ -3972,6 +3976,24 @@ qemu-kvm -net nic,model=? /dev/null processor, resulting in much higher throughput. <span class="since">Since 1.0.6 (QEMU and KVM only)</span> </dd> + <dt><code>host offloading options</code></dt>
Should this be <code>host</host> offloading options? or host TCP options (in some way to indicate that these are TCP level options). Probably also want your disclaimer use of these should be for only those that know what they are doing...
Well ufo is an UDP option.
+ <dd> + The <code>csum</code>, <code>gso</code>, <code>tso4</code>, + <code>tso6</code>, <code>ecn</code>, <code>ufo</code>
Should read: ecn, and ufo
Should you "spell out" what each translates to?
csum (checksums), gso (generic segmentation offload), tso (tcp segmentation offload v4 and v6), ecn (congestion notification), and ufo (UDP fragment offloads)
I thought not spelling them out was the equivalent of the "only use this if you know what you're doing" disclaimer.
+ attributes with possible values <code>on</code> + and <code>off</code> can be used to turn host offloads off.
s/turn host offloads off/turn off host TCP options/
Saying "offloads off" aloud just doesn't seem right.
+ By default, the supported offloads are enabled by QEMU.
s/the supported offloads/the TCP options/
+ <span class="since">Since 1.2.9 (QEMU only)</span> + </dd> + <dt>guest offloading options</dt>
Similar in here... Does the host setting override the guest value or can the host say "tso4=off" while the guest has "tso4=on"? Curious mainly.
It can say that, but I doubt it'll work.
+ <dd> + The <code>csum</code>, <code>tso4</code>, + <code>tso6</code>, <code>ecn</code>, <code>ufo</code>
same here with the "and" - although I suppose you could just reference the <host> bits "above"...
Another way to say it is guests can use the same options except gso
+ attributes with possible values <code>on</code> + and <code>off</code> can be used to turn guest offloads off.
s/turn guest offloads off/turn off guest TCP options/
How about 'turn off guest offload options'?
+ By default, the supported offloads are enabled by QEMU.
s/the supported offloads/the TCP options/
And of course the usage disclaimer!
+ <span class="since">Since 1.2.9 (QEMU only)</span> + </dd> </dl>
<h5><a name="elementsBackendOptions">Setting network backend-specific options</a></h5>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3ccec1c..cdaafa6 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -6897,6 +6897,7 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt, char *ioeventfd = NULL; char *event_idx = NULL; char *queues = NULL; + char *str = NULL; char *filter = NULL; char *internal = NULL; char *devaddr = NULL; @@ -7385,6 +7386,115 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt, } def->driver.virtio.queues = q; }
How about something like this? Not that you have anything wrong, but it avoids the chance that some "change" in the future requires 11 similar changes...
I was worried it wouldn't be clear enough and since we use similar repetition all over domain_conf, it would be better handled separately. Jan