| From a4b08329c74985e5cc3a44b6d2b2c59444ed8079 Mon Sep 17 00:00:00 2001 |
| From: Greg Rose <gregory.v.rose@intel.com> |
| Date: Fri, 3 Feb 2012 00:54:13 +0000 |
| Subject: ixgbe: fix vf lookup |
| |
| From: Greg Rose <gregory.v.rose@intel.com> |
| |
| commit a4b08329c74985e5cc3a44b6d2b2c59444ed8079 upstream. |
| |
| Recent addition of code to find already allocated VFs failed to take |
| account that systems with 2 or more multi-port SR-IOV capable controllers |
| might have already enabled VFs. Make sure that the VFs the function is |
| finding are actually subordinate to the particular instance of the adapter |
| that is looking for them and not subordinate to some device that has |
| previously enabled SR-IOV. |
| |
| This bug exists in 3.2 stable as well as 3.3 release candidates. |
| |
| Reported-by: David Ahern <daahern@cisco.com> |
| Signed-off-by: Greg Rose <gregory.v.rose@intel.com> |
| Tested-by: Robert E Garrett <robertX.e.garrett@intel.com> |
| Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c |
| +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c |
| @@ -67,7 +67,8 @@ static int ixgbe_find_enabled_vfs(struct |
| vf_devfn = pdev->devfn + 0x80; |
| pvfdev = pci_get_device(IXGBE_INTEL_VENDOR_ID, device_id, NULL); |
| while (pvfdev) { |
| - if (pvfdev->devfn == vf_devfn) |
| + if (pvfdev->devfn == vf_devfn && |
| + (pvfdev->bus->number >= pdev->bus->number)) |
| vfs_found++; |
| vf_devfn += 2; |
| pvfdev = pci_get_device(IXGBE_INTEL_VENDOR_ID, |