diff --git a/dpdk/lib/librte_eal/linuxapp/igb_uio/igb_uio.c b/dpdk/lib/librte_eal/linuxapp/igb_uio/igb_uio.c index df41e457..f6dd454e 100644 --- a/dpdk/lib/librte_eal/linuxapp/igb_uio/igb_uio.c +++ b/dpdk/lib/librte_eal/linuxapp/igb_uio/igb_uio.c @@ -380,7 +380,11 @@ igbuio_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) case RTE_INTR_MODE_MSIX: /* Only 1 msi-x vector needed */ msix_entry.entry = 0; +#ifdef HAVE_PCI_ENABLE_MSIX if (pci_enable_msix(dev, &msix_entry, 1) == 0) { +#else + if (pci_enable_msix_range(dev, &msix_entry, 1, 1) == 0) { +#endif dev_dbg(&dev->dev, "using MSI-X"); udev->info.irq = msix_entry.vector; udev->mode = RTE_INTR_MODE_MSIX; diff --git a/dpdk/lib/librte_eal/linuxapp/kni/compat.h b/dpdk/lib/librte_eal/linuxapp/kni/compat.h index 647ba3ce..9bd11770 100644 --- a/dpdk/lib/librte_eal/linuxapp/kni/compat.h +++ b/dpdk/lib/librte_eal/linuxapp/kni/compat.h @@ -2,6 +2,8 @@ * Minimal wrappers to allow compiling kni on older kernels. */ +#include + #ifndef RHEL_RELEASE_VERSION #define RHEL_RELEASE_VERSION(a, b) (((a) << 8) + (b)) #endif @@ -38,3 +40,7 @@ #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 7, 0) #define HAVE_TRANS_START_HELPER #endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) +#define HAVE_SIGNAL_FUNCTIONS_OWN_HEADER +#endif diff --git a/dpdk/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c b/dpdk/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c index f1dcc95b..2aa4f28e 100644 --- a/dpdk/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c +++ b/dpdk/lib/librte_eal/linuxapp/kni/ethtool/igb/igb_main.c @@ -1031,8 +1031,15 @@ static void igb_set_interrupt_capability(struct igb_adapter *adapter, bool msix) for (i = 0; i < numvecs; i++) adapter->msix_entries[i].entry = i; +#ifdef HAVE_PCI_ENABLE_MSIX err = pci_enable_msix(pdev, adapter->msix_entries, numvecs); +#else + err = pci_enable_msix_range(pdev, + adapter->msix_entries, + numvecs, + numvecs); +#endif if (err == 0) break; } diff --git a/dpdk/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h b/dpdk/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h index 84826b26..aea253b1 100644 --- a/dpdk/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h +++ b/dpdk/lib/librte_eal/linuxapp/kni/ethtool/igb/kcompat.h @@ -3933,4 +3933,8 @@ skb_set_hash(struct sk_buff *skb, __u32 hash, __always_unused int type) #define HAVE_VF_VLAN_PROTO #endif /* >= 4.9.0 */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 8, 0) +#define HAVE_PCI_ENABLE_MSIX +#endif + #endif /* _KCOMPAT_H_ */ diff --git a/dpdk/lib/librte_eal/linuxapp/kni/kni_dev.h b/dpdk/lib/librte_eal/linuxapp/kni/kni_dev.h index a0e5cb6b..1c8fbadb 100644 --- a/dpdk/lib/librte_eal/linuxapp/kni/kni_dev.h +++ b/dpdk/lib/librte_eal/linuxapp/kni/kni_dev.h @@ -25,9 +25,15 @@ #ifndef _KNI_DEV_H_ #define _KNI_DEV_H_ +#include "compat.h" + #include #include +#ifdef HAVE_SIGNAL_FUNCTIONS_OWN_HEADER +#include +#else #include +#endif #include #include #include