Since only one MSI-X entry is ever defined, there is no need to put it as an array in the driver private data structure. One msix_entry can just be put on the stack and initialized there. Also remove the unused backport defines related to MSI-X. I suspect this code was just inherited from some other project and never cleaned up. Signed-off-by: Stephen Hemminger --- a/lib/librte_eal/linuxapp/igb_uio/igb_uio.c 2014-07-18 08:38:29.291724950 -0700 +++ b/lib/librte_eal/linuxapp/igb_uio/igb_uio.c 2014-07-18 08:42:06.460487465 -0700 @@ -37,19 +37,6 @@ #endif #include -/** - * MSI-X related macros, copy from linux/pci_regs.h in kernel 2.6.39, - * but none of them in kernel 2.6.35. - */ -#ifndef PCI_MSIX_ENTRY_SIZE -#define PCI_MSIX_ENTRY_SIZE 16 -#define PCI_MSIX_ENTRY_LOWER_ADDR 0 -#define PCI_MSIX_ENTRY_UPPER_ADDR 4 -#define PCI_MSIX_ENTRY_DATA 8 -#define PCI_MSIX_ENTRY_VECTOR_CTRL 12 -#define PCI_MSIX_ENTRY_CTRL_MASKBIT 1 -#endif - #ifdef RTE_PCI_CONFIG #define PCI_SYS_FILE_BUF_SIZE 10 #define PCI_DEV_CAP_REG 0xA4 @@ -59,8 +46,6 @@ #define PCI_DEV_CTRL_EXT_TAG_MASK (1 << PCI_DEV_CTRL_EXT_TAG_SHIFT) #endif -#define IGBUIO_NUM_MSI_VECTORS 1 - /** * A structure describing the private information for a uio device. */ @@ -69,8 +54,6 @@ struct rte_uio_pci_dev { struct pci_dev *pdev; spinlock_t lock; /* spinlock for accessing PCI config space or msix data in multi tasks/isr */ enum rte_intr_mode mode; - struct msix_entry \ - msix_entries[IGBUIO_NUM_MSI_VECTORS]; /* pointer to the msix vectors to be allocated later */ }; static char *intr_mode = NULL; @@ -546,6 +529,7 @@ static int igbuio_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) { struct rte_uio_pci_dev *udev; + struct msix_entry msix_entry; udev = kzalloc(sizeof(struct rte_uio_pci_dev), GFP_KERNEL); if (!udev) @@ -602,12 +586,8 @@ igbuio_pci_probe(struct pci_dev *dev, co /* check if it need to try msix first */ if (igbuio_intr_mode_preferred == RTE_INTR_MODE_MSIX) { - int vector; - - for (vector = 0; vector < IGBUIO_NUM_MSI_VECTORS; vector ++) - udev->msix_entries[vector].entry = vector; - - if (pci_enable_msix(udev->pdev, udev->msix_entries, IGBUIO_NUM_MSI_VECTORS) == 0) { + msix_entry.entry = 0; + if (pci_enable_msix(dev, &msix_entry, 1) == 0) { udev->mode = RTE_INTR_MODE_MSIX; } else { @@ -618,7 +598,7 @@ igbuio_pci_probe(struct pci_dev *dev, co switch (udev->mode) { case RTE_INTR_MODE_MSIX: udev->info.irq_flags = 0; - udev->info.irq = udev->msix_entries[0].vector; + udev->info.irq = msix_entry.vector; break; case RTE_INTR_MODE_MSI: break;