Hi,
I am using SR-IOV on an i350 interface on a Linux machine and, even though I mainly need Virtual Functions (VFs) in PCI-passthrough mode, I would also like to be able to use VFs as regular interfaces in openvswitch (OVS) switches.
For instance, here's a simple setup with SR-IOV in PCI-passthrough. A VM communicates to an external machine through VF0 in PCI-passhtrough:
[VM] <-> [VF0] <-> [external machine]
If the PF is connected through a cable to another machine, I can ping this other machine successfully from the VM.
Now, if I remove the PCI-passthrough link and replace it with an OVS switch that contains the VM interface and VF0, I cannot ping the external machine from the VM:
[VM] <-> [ OVS switch ] <-> [VF0] <-> [external machine]
I suppose that this is related to some MAC address checking going on at the VF level. One workaround I found is to assign to the VM interface the same MAC address as VF0, but clearly this is not a scalable solution. Disabling spoof checking on the host on VF0 doesn't do the trick ($ ip link set eth7 vf 1 spoofchk off).
I know that I could just replace VF0 with the corresponding PF and it would work, but is there any additional step to take to make my setup work?