-
Notifications
You must be signed in to change notification settings - Fork 177
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Virtual Function Unhealthy when pci address map to two interfaces #58
Comments
I'd guess this is a special case for Mellanox card that two interfaces share the same PCI address. |
So in openstack we had the some problem so we just used config option exclude_devices to exclude all the unneeded PF device to VF PCI address mapping see [1] under SR-IOV with ConnectX-3/ConnectX-3 Pro Dual Port Ethernet. This allow to keep the same logic as today and the user just need to provide unneeded PF device to VF PCI address per mlx4_core num_vfs config. |
Since we are already using pcidp/config.json file to specify which rootDevice shall be discovered and managed by device plugin, I think it might make sense to use the same mechinsim for the exclude_devices config. Instead of adding a new field, I'm thinking if it's possible to change the current format of rootDevices and add associated device name for each PCI address if there is a need to distinguish different device names under same PCI address. for example:
|
But the rootDevices are list of PF PCI address and we need to map the VF pci to PF netdevice |
Yes, with both PCI address and PF interface name provided, we can uniquely identify which rootDevice a certain VF belongs to, which means if one wants to query the link status of a VF, PCI address and PF name can be used together to decide which sys path to query. For example. in the issue description, we can decide either use |
@ahalim-intel is working on a new approach of defining the resource groups ( see comments in #59 ) which might change how the config.json is configured. let's hold the discussion until the new approach is ready. |
@moshe010 do you think we can close this issue? |
yes, the The "pfNames" selector which can specify a range of VFs should solve it. |
Environment
Hardware: Mellanox Technologies MT27500/MT27520 Family [ConnectX-3/ConnectX-3 Pro Virtual Function]
Branch: master
Problem
We have the virtual function enabled on SR-IOV supported device, but this network interface card has 2 ports:
enp3s0
andenp3s0d0
. If we don't have these two interfaces enabled SR-IOV both, it will fail when healthy check.Here is one interface of the card with SR-IOV enabled, it has 4 virtual functions.
But the interface's PCI address is mapping to 2 devices:
enp3s0
andenp3s0d1
.And in the source code
pkg/resources/netDevicePool.go
, it will check bypf
parameter, I believe it is PCI address we feed in/etc/pcidp/config.json
.Then it will check
pf
byIsNetlinkStatusUp
function, inutils/utils.go
, and because we can't make sure what is the interface name for this PCI address, so we use the wildcard to find interface'soperstate
.But once we don't have both
enp3s0
andenp3s0d0
keep in up status, it failed on the health check.Further question
this is two isolated interfaces share with same pci address. When we locate VFs into the container, how can I know which interface's VF is located to the container?
The text was updated successfully, but these errors were encountered: