igb_uio: fix build on Linux < 3.16
authorScott Branden <scott.branden@broadcom.com>
Tue, 17 Apr 2018 17:52:25 +0000 (10:52 -0700)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 20 Apr 2018 09:10:55 +0000 (11:10 +0200)
Starting from Linux v3.16 pci_is_bridge() is in linux/pci.h,
 in previous versions it is in drivers/pci/pci.h which is private header.

Fix build error when calling pci_is_bridge by not calling/supporting
pci_is_bridge with kernel versions before 3.16.

Fixes: 6f0841b7701b ("igb_uio: bind error if PCIe bridge")

Reported-by: Ferruh Yigit <ferruh.yigit@intel.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
kernel/linux/igb_uio/compat.h
kernel/linux/igb_uio/igb_uio.c

index ce456d4..d9f4d29 100644 (file)
@@ -121,6 +121,10 @@ static bool pci_check_and_mask_intx(struct pci_dev *pdev)
 
 #endif /* < 3.3.0 */
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 16, 0)
+#define HAVE_PCI_IS_BRIDGE_API 1
+#endif
+
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 8, 0)
 #define HAVE_ALLOC_IRQ_VECTORS 1
 #endif
index cbc5ab6..cd9b7e7 100644 (file)
@@ -473,10 +473,12 @@ igbuio_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
        void *map_addr;
        int err;
 
+#ifdef HAVE_PCI_IS_BRIDGE_API
        if (pci_is_bridge(dev)) {
                dev_warn(&dev->dev, "Ignoring PCI bridge device\n");
                return -ENODEV;
        }
+#endif
 
        udev = kzalloc(sizeof(struct rte_uio_pci_dev), GFP_KERNEL);
        if (!udev)