X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eal%2Flinuxapp%2Figb_uio%2Fcompat.h;h=30508f35c70a0d07ce5f7bbcc390f6d1fcfa1f6b;hb=d5c7a09edbe709b50ecde4269b80b9a07627c876;hp=2a16540efe04c1e66bb0c7551c577cc563181ac2;hpb=4a5c221f9d9bf641b808e1f1a90ec584b4596c94;p=dpdk.git diff --git a/lib/librte_eal/linuxapp/igb_uio/compat.h b/lib/librte_eal/linuxapp/igb_uio/compat.h index 2a16540efe..30508f35c7 100644 --- a/lib/librte_eal/linuxapp/igb_uio/compat.h +++ b/lib/librte_eal/linuxapp/igb_uio/compat.h @@ -2,22 +2,38 @@ * Minimal wrappers to allow compiling igb_uio on older kernels. */ +#ifndef RHEL_RELEASE_VERSION +#define RHEL_RELEASE_VERSION(a, b) (((a) << 8) + (b)) +#endif #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0) #define pci_cfg_access_lock pci_block_user_cfg_access #define pci_cfg_access_unlock pci_unblock_user_cfg_access #endif +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0) +#define HAVE_PTE_MASK_PAGE_IOMAP +#endif + #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 +#define PCI_MSIX_ENTRY_SIZE 16 +#define PCI_MSIX_ENTRY_VECTOR_CTRL 12 +#define PCI_MSIX_ENTRY_CTRL_MASKBIT 1 #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34) +/* + * for kernels < 2.6.38 and backported patch that moves MSI-X entry definition + * to pci_regs.h Those kernels has PCI_MSIX_ENTRY_SIZE defined but not + * PCI_MSIX_ENTRY_CTRL_MASKBIT + */ +#ifndef PCI_MSIX_ENTRY_CTRL_MASKBIT +#define PCI_MSIX_ENTRY_CTRL_MASKBIT 1 +#endif + +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34) && \ + (!(defined(RHEL_RELEASE_CODE) && \ + RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(5, 9))) + static int pci_num_vf(struct pci_dev *dev) { struct iov { @@ -35,10 +51,20 @@ static int pci_num_vf(struct pci_dev *dev) return iov->nr_virtfn; } -#endif +#endif /* < 2.6.34 */ -#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) && \ + (!(defined(RHEL_RELEASE_CODE) && \ + RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6, 4))) + +#define kstrtoul strict_strtoul + +#endif /* < 2.6.39 */ + +#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0) && \ + (!(defined(RHEL_RELEASE_CODE) && \ + RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(6, 3))) /* Check if INTX works to control irq's. * Set's INTX_DISABLE flag and reads it back @@ -92,12 +118,19 @@ static bool pci_check_and_mask_intx(struct pci_dev *pdev) return pending; } + +#endif /* < 3.3.0 */ + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0) +#define HAVE_ALLOC_IRQ_VECTORS 1 +#endif + +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 3, 0) +#define HAVE_MSI_LIST_IN_GENERIC_DEVICE 1 #endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 37) -/* Compatability wrapper for new kernel API for IRQ */ -#define irq_data irq_desc -#define irq_get_irq_data(irq) irq_to_desc(irq) -#define irq_data_get_msi(data) get_irq_desc_msi(data) +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 5, 0) +#define HAVE_PCI_MSI_MASK_IRQ 1 #endif +