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))

Reply via email to