mirror of https://gitee.com/openkylin/libvirt.git
Add mrg_rxbuf option to virtio interfaces
Add an XML attribute to allow disabling merge of rx buffers on the host: <interface ...> ... <model type='virtio'/> <driver ...> <host mrg_rxbuf='off'/> </driver> </interface> https://bugzilla.redhat.com/show_bug.cgi?id=1186886
This commit is contained in:
parent
e008a03324
commit
6067182b0d
|
@ -4012,7 +4012,7 @@ qemu-kvm -net nic,model=? /dev/null
|
|||
<target dev='vnet1'/>
|
||||
<model type='virtio'/>
|
||||
<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'/>
|
||||
<host csum='off' gso='off' tso4='off' tso6='off' ecn='off' ufo='off' mrg_rxbuf='off'/>
|
||||
<guest csum='off' tso4='off' tso6='off' ecn='off' ufo='off'/>
|
||||
</driver>
|
||||
</b>
|
||||
|
@ -4127,6 +4127,10 @@ qemu-kvm -net nic,model=? /dev/null
|
|||
and <code>off</code> can be used to turn off host offloading options.
|
||||
By default, the supported offloads are enabled by QEMU.
|
||||
<span class="since">Since 1.2.9 (QEMU only)</span>
|
||||
The <code>mrg_rxbuf</code> attribute can be used to control
|
||||
mergeable rx buffers on the host side. Possible values are
|
||||
<code>on</code> (default) and <code>off</code>.
|
||||
<span class="since">Since 1.2.13 (QEMU only)</span>
|
||||
</dd>
|
||||
<dt><code>guest</code> offloading options</dt>
|
||||
<dd>
|
||||
|
|
|
@ -2469,6 +2469,11 @@
|
|||
<ref name="virOnOff"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
<optional>
|
||||
<attribute name='mrg_rxbuf'>
|
||||
<ref name="virOnOff"/>
|
||||
</attribute>
|
||||
</optional>
|
||||
</element>
|
||||
</optional>
|
||||
<optional>
|
||||
|
|
|
@ -8066,6 +8066,16 @@ virDomainNetDefParseXML(virDomainXMLOptionPtr xmlopt,
|
|||
def->driver.virtio.host.ufo = val;
|
||||
}
|
||||
VIR_FREE(str);
|
||||
if ((str = virXPathString("string(./driver/host/@mrg_rxbuf)", ctxt))) {
|
||||
if ((val = virTristateSwitchTypeFromString(str)) <= 0) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("unknown host mrg_rxbuf mode '%s'"),
|
||||
str);
|
||||
goto error;
|
||||
}
|
||||
def->driver.virtio.host.mrg_rxbuf = val;
|
||||
}
|
||||
VIR_FREE(str);
|
||||
if ((str = virXPathString("string(./driver/guest/@csum)", ctxt))) {
|
||||
if ((val = virTristateSwitchTypeFromString(str)) <= 0) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
|
@ -17916,6 +17926,10 @@ virDomainVirtioNetHostOptsFormat(char **outstr,
|
|||
virBufferAsprintf(&buf, "ufo='%s' ",
|
||||
virTristateSwitchTypeToString(def->driver.virtio.host.ufo));
|
||||
}
|
||||
if (def->driver.virtio.host.mrg_rxbuf) {
|
||||
virBufferAsprintf(&buf, "mrg_rxbuf='%s' ",
|
||||
virTristateSwitchTypeToString(def->driver.virtio.host.mrg_rxbuf));
|
||||
}
|
||||
virBufferTrim(&buf, " ", -1);
|
||||
|
||||
if (virBufferCheckError(&buf) < 0)
|
||||
|
|
|
@ -938,6 +938,7 @@ struct _virDomainNetDef {
|
|||
virTristateSwitch tso6;
|
||||
virTristateSwitch ecn;
|
||||
virTristateSwitch ufo;
|
||||
virTristateSwitch mrg_rxbuf;
|
||||
} host;
|
||||
struct {
|
||||
virTristateSwitch csum;
|
||||
|
|
Loading…
Reference in New Issue