Interface Pools and Passthrough mode:
Current Method:
The passthrough mode uses a macvtap âdirectâ connection to connect each guest to the
network. The physical interface to be used is picked from among those listed in
<interface> sub elements of the <forward> element.
The current specification for <forward> extends to allow 0 or more <interface>
sub-elements:
Example:
<forward mode='passthrough' dev='eth10'/>
<interface dev='eth10'/>
<interface dev='eth12'/>
<interface dev='eth18'/>
<interface dev='eth20'/>
</forward>
However with an ethernet card with 64 VF's or more, the above method gets tedious on
the system.
On the other hand, just parameterizing a string (eth%d) is inadequate, eg, when there are
multiple non-contiguous ranges.
Proposed Method:
The 5 patches provided along with this introductory e-mail
i) Introduce a structure to store the state of all the virtual functions attached to each
physical function
ii) Find a free virtual function given the physical function.
The forward specification will hence only mention the physical function as the interface
sub element:
Example:
<forward mode='passthrough' dev='eth2'/>
<interface dev='eth2'/>
</forward>
Shradha Shah (5):
Moving the declaration of _pciDevice and _pciDeviceList to pci.h
Added function pciSysfsFile to enable access to the PCI SYSFS files.
Adding functions virNetDevGetVirtualFunctions and virNetDevGetNetName
virNetDevGetVirtualFunctions: Gets the BDF of all the Virtual
Functions given a physical function virNetDevGetNetName: Gets
the interface name of the PCI Device.
Addition of a new device structure to store the state of a Virtual
Function Modifications to the Physical Device Structure to
store state of its Virtual Functions
If a system has 64 or more VF's, it is quite tedious to mention each
VF in the interface pool. The following modification find a
Free VF given a Physical Function when mode=passthrough. We
also save the state of each VF. Hence modifications to
networkAllocateActualDevice, networkNotifyActualDevice and
networkReleaseActualDevice were required. The following
patch does just that.
src/conf/network_conf.c | 19 ++++-
src/conf/network_conf.h | 10 ++
src/network/bridge_driver.c | 208 +++++++++++++++++++++++++++++++++++++------
src/util/pci.c | 52 ++++-------
src/util/pci.h | 36 ++++++++
src/util/virnetdev.c | 89 ++++++++++++++++++
src/util/virnetdev.h | 10 ++
7 files changed, 359 insertions(+), 65 deletions(-)
--
1.7.4.4