igb_uio: fix build with kernel 3.18
authorJincheng Miao <jmiao@redhat.com>
Wed, 10 Dec 2014 03:33:01 +0000 (11:33 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 11 Dec 2014 00:42:02 +0000 (01:42 +0100)
From upstream kernel commit 3db2e9cd, strict_strto* serial functions
are removed. So that we should directly used kstrtoul instead.

kstrtoul exists from RHEL6.4, so for compatibility with old kernel and RHEL,
add some logic to igb_uio/compat.h.

Signed-off-by: Jincheng Miao <jmiao@redhat.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
lib/librte_eal/linuxapp/igb_uio/compat.h
lib/librte_eal/linuxapp/igb_uio/igb_uio.c

index 00934d8..9454382 100644 (file)
@@ -44,6 +44,14 @@ static int pci_num_vf(struct pci_dev *dev)
 
 #endif /* < 2.6.34 */
 
+#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)))
index d1ca26e..47ff2f3 100644 (file)
@@ -83,7 +83,7 @@ store_max_vfs(struct device *dev, struct device_attribute *attr,
        unsigned long max_vfs;
        struct pci_dev *pdev = container_of(dev, struct pci_dev, dev);
 
-       if (0 != strict_strtoul(buf, 0, &max_vfs))
+       if (0 != kstrtoul(buf, 0, &max_vfs))
                return -EINVAL;
 
        if (0 == max_vfs)
@@ -174,7 +174,7 @@ store_max_read_request_size(struct device *dev,
        unsigned long size = 0;
        int ret;
 
-       if (strict_strtoul(buf, 0, &size) != 0)
+       if (0 != kstrtoul(buf, 0, &size))
                return -EINVAL;
 
        ret = pcie_set_readrq(pci_dev, (int)size);