mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-26 15:45:28 +00:00
c9027d8f44
Adding functionality to libvirt that will allow it query the ethtool interface for the availability of certain NIC HW offload features Here is an example of the feature XML definition: <device> <name>net_eth4_90_e2_ba_5e_a5_45</name> <path>/sys/devices/pci0000:00/0000:00:03.0/0000:08:00.1/net/eth4</path> <parent>pci_0000_08_00_1</parent> <capability type='net'> <interface>eth4</interface> <address>90:e2:ba:5e:a5:45</address> <link speed='10000' state='up'/> <feature name='rx'/> <feature name='tx'/> <feature name='sg'/> <feature name='tso'/> <feature name='gso'/> <feature name='gro'/> <feature name='rxvlan'/> <feature name='txvlan'/> <feature name='rxhash'/> <capability type='80203'/> </capability> </device> Signed-off-by: Ján Tomko <jtomko@redhat.com>
497 lines
11 KiB
XML
497 lines
11 KiB
XML
<?xml version="1.0"?>
|
|
<!-- A Relax NG schema for the libvirt node device XML format -->
|
|
<grammar xmlns="http://relaxng.org/ns/structure/1.0"
|
|
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
|
<include href='basictypes.rng'/>
|
|
<start>
|
|
<ref name='device'/>
|
|
</start>
|
|
|
|
<define name='device'>
|
|
<element name="device">
|
|
<!-- The name of the network, used to refer to it through the API
|
|
and in virsh -->
|
|
<element name="name"><text/></element>
|
|
<optional>
|
|
<element name="path"><text/></element>
|
|
</optional>
|
|
<optional>
|
|
<element name="parent"><text/></element>
|
|
</optional>
|
|
|
|
<optional>
|
|
<element name="driver">
|
|
<element name="name"><text/></element>
|
|
</element>
|
|
</optional>
|
|
|
|
<zeroOrMore>
|
|
<ref name="capability"/>
|
|
</zeroOrMore>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='capability'>
|
|
<element name="capability">
|
|
<choice>
|
|
<ref name="capsystem"/>
|
|
<ref name="cappcidev"/>
|
|
<ref name="capusbdev"/>
|
|
<ref name="capusbinterface"/>
|
|
<ref name="capnet"/>
|
|
<ref name="capscsihost"/>
|
|
<ref name="capscsi"/>
|
|
<ref name="capstorage"/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='capsystem'>
|
|
<attribute name='type'>
|
|
<value>system</value>
|
|
</attribute>
|
|
|
|
<optional>
|
|
<element name='product'><text/></element>
|
|
</optional>
|
|
|
|
<element name='hardware'>
|
|
<optional>
|
|
<element name='vendor'><text/></element>
|
|
</optional>
|
|
<optional>
|
|
<element name='version'><text/></element>
|
|
</optional>
|
|
<optional>
|
|
<element name='serial'><text/></element>
|
|
</optional>
|
|
|
|
<element name='uuid'>
|
|
<ref name='UUID'/>
|
|
</element>
|
|
</element>
|
|
|
|
|
|
<element name='firmware'>
|
|
<optional>
|
|
<element name='vendor'><text/></element>
|
|
</optional>
|
|
<optional>
|
|
<element name='version'><text/></element>
|
|
</optional>
|
|
<optional>
|
|
<element name='release_date'><text/></element>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='cappcidev'>
|
|
<attribute name='type'>
|
|
<value>pci</value>
|
|
</attribute>
|
|
|
|
<element name='domain'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
<element name='bus'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
<element name='slot'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
<element name='function'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
|
|
<element name='product'>
|
|
<attribute name='id'>
|
|
<ref name='hexuint'/>
|
|
</attribute>
|
|
|
|
<choice>
|
|
<text/>
|
|
<empty/>
|
|
</choice>
|
|
</element>
|
|
|
|
<element name='vendor'>
|
|
<attribute name='id'>
|
|
<ref name='hexuint'/>
|
|
</attribute>
|
|
|
|
<choice>
|
|
<text/>
|
|
<empty/>
|
|
</choice>
|
|
</element>
|
|
|
|
<optional>
|
|
<element name='capability'>
|
|
<attribute name='type'>
|
|
<value>phys_function</value>
|
|
</attribute>
|
|
<optional>
|
|
<ref name='address'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
|
|
<optional>
|
|
<element name='capability'>
|
|
<attribute name='type'>
|
|
<value>virt_functions</value>
|
|
</attribute>
|
|
<optional>
|
|
<ref name='address'/>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
|
|
<optional>
|
|
<element name='iommuGroup'>
|
|
<attribute name='number'>
|
|
<ref name='unsignedInt'/>
|
|
</attribute>
|
|
<oneOrMore>
|
|
<ref name='address'/>
|
|
</oneOrMore>
|
|
</element>
|
|
</optional>
|
|
|
|
<optional>
|
|
<element name='numa'>
|
|
<optional>
|
|
<attribute name='node'>
|
|
<data type='int'/>
|
|
</attribute>
|
|
</optional>
|
|
</element>
|
|
</optional>
|
|
|
|
<optional>
|
|
<element name='pci-express'>
|
|
<zeroOrMore>
|
|
<element name='link'>
|
|
<attribute name='validity'>
|
|
<choice>
|
|
<value>cap</value>
|
|
<value>sta</value>
|
|
</choice>
|
|
</attribute>
|
|
<optional>
|
|
<attribute name='port'>
|
|
<ref name='unsignedInt'/>
|
|
</attribute>
|
|
</optional>
|
|
<optional>
|
|
<attribute name='speed'>
|
|
<data type="string">
|
|
<param name="pattern">[0-9]+(.[0-9]+)?</param>
|
|
</data>
|
|
</attribute>
|
|
</optional>
|
|
<attribute name='width'>
|
|
<ref name='unsignedInt'/>
|
|
</attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='capusbdev'>
|
|
<attribute name='type'>
|
|
<value>usb_device</value>
|
|
</attribute>
|
|
|
|
<element name='bus'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
<element name='device'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
|
|
<element name='product'>
|
|
<attribute name='id'>
|
|
<ref name='hexuint'/>
|
|
</attribute>
|
|
|
|
<choice>
|
|
<text/>
|
|
<empty/>
|
|
</choice>
|
|
</element>
|
|
|
|
<element name='vendor'>
|
|
<attribute name='id'>
|
|
<ref name='hexuint'/>
|
|
</attribute>
|
|
|
|
<choice>
|
|
<text/>
|
|
<empty/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='capusbinterface'>
|
|
<attribute name='type'>
|
|
<value>usb</value>
|
|
</attribute>
|
|
|
|
<element name='number'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
<element name='class'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
<element name='subclass'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
<element name='protocol'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
|
|
<optional>
|
|
<element name='description'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='capnet'>
|
|
<attribute name='type'>
|
|
<value>net</value>
|
|
</attribute>
|
|
|
|
<element name='interface'>
|
|
<text/>
|
|
</element>
|
|
<optional>
|
|
<element name='address'>
|
|
<ref name='mac'/>
|
|
</element>
|
|
</optional>
|
|
<ref name="link-speed-state"/>
|
|
|
|
<zeroOrMore>
|
|
<element name='feature'>
|
|
<attribute name='name'>
|
|
<ref name='netfeaturename'/>
|
|
</attribute>
|
|
</element>
|
|
</zeroOrMore>
|
|
|
|
<zeroOrMore>
|
|
<ref name='subcapnet'/>
|
|
</zeroOrMore>
|
|
</define>
|
|
|
|
<define name='netfeaturename'>
|
|
<data type='string'>
|
|
<param name='pattern'>[a-zA-Z\-_]+</param>
|
|
</data>
|
|
</define>
|
|
|
|
<define name='subcapnet'>
|
|
<element name='capability'>
|
|
<choice>
|
|
<ref name='subcapnet80203'/>
|
|
<ref name='subcapnet80211'/>
|
|
</choice>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='subcapnet80203'>
|
|
<attribute name='type'>
|
|
<value>80203</value>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name='subcapnet80211'>
|
|
<attribute name='type'>
|
|
<value>80211</value>
|
|
</attribute>
|
|
</define>
|
|
|
|
<define name='capsfchost'>
|
|
<attribute name='type'>
|
|
<value>fc_host</value>
|
|
</attribute>
|
|
|
|
<element name='wwnn'>
|
|
<ref name='wwn'/>
|
|
</element>
|
|
|
|
<element name='wwpn'>
|
|
<ref name='wwn'/>
|
|
</element>
|
|
|
|
<element name='fabric_wwn'>
|
|
<ref name='wwn'/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='capsvports'>
|
|
<attribute name='type'>
|
|
<value>vports_ops</value>
|
|
</attribute>
|
|
<element name='max_vports'>
|
|
<ref name='unsignedInt'/>
|
|
</element>
|
|
<element name='vports'>
|
|
<ref name='unsignedInt'/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='capscsihost'>
|
|
<attribute name='type'>
|
|
<value>scsi_host</value>
|
|
</attribute>
|
|
|
|
<element name='host'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
|
|
<optional>
|
|
<element name='unique_id'>
|
|
<ref name='positiveInteger'/>
|
|
</element>
|
|
</optional>
|
|
|
|
<optional>
|
|
<zeroOrMore>
|
|
<element name='capability'>
|
|
<choice>
|
|
<ref name='capsfchost'/>
|
|
<ref name='capsvports'/>
|
|
</choice>
|
|
</element>
|
|
</zeroOrMore>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='capscsi'>
|
|
<attribute name='type'>
|
|
<value>scsi</value>
|
|
</attribute>
|
|
|
|
<element name='host'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
<element name='bus'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
<element name='target'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
<element name='lun'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
|
|
<element name='type'>
|
|
<text/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='capstorage'>
|
|
<attribute name='type'>
|
|
<value>storage</value>
|
|
</attribute>
|
|
|
|
<element name='block'>
|
|
<ref name='path'/>
|
|
</element>
|
|
|
|
<optional>
|
|
<element name='bus'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='drive_type'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='model'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='vendor'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
<optional>
|
|
<element name='serial'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
|
|
<choice>
|
|
<ref name='capstorageremoveable'/>
|
|
<ref name='capstoragefixed'/>
|
|
</choice>
|
|
|
|
<optional>
|
|
<element name='capability'>
|
|
<attribute name='type'>
|
|
<value>hotpluggable</value>
|
|
</attribute>
|
|
</element>
|
|
</optional>
|
|
</define>
|
|
|
|
<define name='capstorageremoveable'>
|
|
<element name='capability'>
|
|
<attribute name='type'>
|
|
<value>removable</value>
|
|
</attribute>
|
|
<element name='media_available'>
|
|
<choice>
|
|
<value>1</value>
|
|
<value>0</value>
|
|
</choice>
|
|
</element>
|
|
|
|
<element name='media_size'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
<optional>
|
|
<element name='media_label'>
|
|
<text/>
|
|
</element>
|
|
</optional>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='capstoragefixed'>
|
|
<element name='size'>
|
|
<ref name='unsignedLong'/>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='address'>
|
|
<element name='address'>
|
|
<attribute name='domain'><ref name='hexuint'/></attribute>
|
|
<attribute name='bus'><ref name='hexuint'/></attribute>
|
|
<attribute name='slot'><ref name='hexuint'/></attribute>
|
|
<attribute name='function'><ref name='hexuint'/></attribute>
|
|
</element>
|
|
</define>
|
|
|
|
<define name='mac'>
|
|
<data type='string'>
|
|
<param name="pattern">([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}</param>
|
|
</data>
|
|
</define>
|
|
|
|
<define name='path'>
|
|
<data type='string'>
|
|
<param name="pattern">/[a-zA-Z0-9_\+\-/%]+</param>
|
|
</data>
|
|
</define>
|
|
|
|
</grammar>
|