To keep from confusing users, cap max VFs at 7, despite PCI SR-IOV config space showing a max of 8. This reserves a queue pair for the PF.
This issue was cited here: http://dpdk.org/ml/archives/dev/2014-April/001832.html Cc: Bruce Richardson <bruce.richardson at intel.com> Cc: Stephen Hemminger <stephen at networkplumber.org> Signed-off-by: Chris Wright <chrisw at redhat.com> --- This is what Linux kernel driver does. I have only compile tested it. Stephen sending to you and Bruce in case you want to Ack and add to your current queue. lib/librte_eal/linuxapp/igb_uio/igb_uio.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c index 6fa7396..d5db97a 100644 --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c @@ -139,6 +139,12 @@ store_max_vfs(struct device *dev, struct device_attribute *attr, if (0 != strict_strtoul(buf, 0, &max_vfs)) return -EINVAL; + /* reserve a queue pair for PF */ + if (max_vfs > 7) { + dev_warn(dev, "Maxixum of 7 VFs per PF, using max\n"); + max_vfs = 7; + } + if (0 == max_vfs) pci_disable_sriov(pdev); else if (0 == local_pci_num_vf(pdev))