[dpdk-dev] [PATCH] kni: fix pci_enable_msix_range error handling

Andy Roulin aroulin at cumulusnetworks.com
Mon Dec 18 07:16:30 CET 2017


pci_enable_msix_range's return value has a different meaning than what
was previously returned by pci_enable_msix.

"It returns a negative errno if an error occurs. If it succeeds, it
returns the actual number of interrupts allocated and indicates the
successful configuration of MSI-X capability structure with new
allocated MSI-X interrupts."

The following commit introduced pci_enable_msix_range:
dpdk: 9fb3cd2c ("kni: fix ethtool build with kernel 4.11")
http://dpdk.org/dev/patchwork/patch/24076/

Signed-off-by: Andy Roulin <aroulin at cumulusnetworks.com>
---
 lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c
index e0f427a..32ef3b9 100644
--- a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c
+++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c
@@ -1043,14 +1043,16 @@ static void igb_set_interrupt_capability(struct igb_adapter *adapter, bool msix)
 #ifdef HAVE_PCI_ENABLE_MSIX
 			err = pci_enable_msix(pdev,
 			                      adapter->msix_entries, numvecs);
+			if (err == 0)
+				break;
 #else
 			err = pci_enable_msix_range(pdev,
 					adapter->msix_entries,
 					numvecs,
 					numvecs);
-#endif
-			if (err == 0)
+			if (err < 0)
 				break;
+#endif
 		}
 		/* MSI-X failed, so fall through and try MSI */
 		dev_warn(pci_dev_to_dev(pdev), "Failed to initialize MSI-X interrupts. "
-- 
2.1.4



More information about the dev mailing list