Fix Linux version incompatibility with pci_register_driver()

The function pci_register_driver() returns different error codes on
Linux 2.4 and 2.6. This patch adds compat_pci_register_driver()
to deal with this incompatibility and updates all drivers using it.

Signed-off-by: Wolfang Grandegger <[EMAIL PROTECTED]>

Index: rtnet/drivers/rt_eepro100.c
===================================================================
--- rtnet.orig/drivers/rt_eepro100.c
+++ rtnet/drivers/rt_eepro100.c
@@ -1999,13 +1999,7 @@ static int __init eepro100_init_module(v
     debug = speedo_debug; /* touch debug variable */
 #endif /* RTNET_DRV_EEPRO100_DBG */
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-    if (pci_register_driver(&eepro100_driver) <= 0)
-        return -EINVAL;
-    return 0;
-#else
-    return pci_register_driver(&eepro100_driver);
-#endif
+    return compat_pci_register_driver(&eepro100_driver);
 }
 
 static void __exit eepro100_cleanup_module(void)
Index: rtnet/stack/include/rtnet_port.h
===================================================================
--- rtnet.orig/stack/include/rtnet_port.h
+++ rtnet/stack/include/rtnet_port.h
@@ -32,6 +32,16 @@
 #include <ethernet/eth.h>
 
 
+#ifndef compat_pci_register_driver
+# if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
+#  define compat_pci_register_driver(drv) \
+    (pci_register_driver(drv) <= 0 ? -EINVAL : 0)
+# else
+#  define compat_pci_register_driver(drv) \
+    pci_register_driver(drv)
+# endif
+#endif
+
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
 # define pci_dma_sync_single_for_device     pci_dma_sync_single
 # define pci_dma_sync_single_for_cpu        pci_dma_sync_single
Index: rtnet/drivers/rt_8139too.c
===================================================================
--- rtnet.orig/drivers/rt_8139too.c
+++ rtnet/drivers/rt_8139too.c
@@ -1861,7 +1861,7 @@ static int __init rtl8139_init_module (v
         printk (KERN_INFO RTL8139_DRIVER_NAME "\n");
 #endif
 
-        return pci_register_driver (&rtl8139_pci_driver);
+        return compat_pci_register_driver (&rtl8139_pci_driver);
 }
 
 
Index: rtnet/drivers/rt_natsemi.c
===================================================================
--- rtnet.orig/drivers/rt_natsemi.c
+++ rtnet/drivers/rt_natsemi.c
@@ -2865,7 +2865,7 @@ static int __init natsemi_init_mod (void
     rtdm_printk(version);
 #endif
 
-    return pci_register_driver (&natsemi_driver);
+    return compat_pci_register_driver (&natsemi_driver);
 }
 
 static void __exit natsemi_exit_mod (void)
Index: rtnet/drivers/rt_pcnet32.c
===================================================================
--- rtnet.orig/drivers/rt_pcnet32.c
+++ rtnet/drivers/rt_pcnet32.c
@@ -1810,7 +1810,7 @@ static int __init pcnet32_init_module(vo
     tx_start = tx_start_pt;
 
     /* find the PCI devices */
-    if (!pci_register_driver(&pcnet32_driver))
+    if (!compat_pci_register_driver(&pcnet32_driver))
     pcnet32_have_pci = 1;
 
     /* should we find any remaining VLbus devices ? */
Index: rtnet/drivers/rt_via-rhine.c
===================================================================
--- rtnet.orig/drivers/rt_via-rhine.c
+++ rtnet/drivers/rt_via-rhine.c
@@ -2037,7 +2037,7 @@ static int __init via_rhine_init (void)
 #ifdef MODULE
     printk(version);
 #endif
-    return pci_register_driver (&via_rhine_driver);
+    return compat_pci_register_driver (&via_rhine_driver);
 }
 
 
Index: rtnet/drivers/e1000/e1000_main.c
===================================================================
--- rtnet.orig/drivers/e1000/e1000_main.c
+++ rtnet/drivers/e1000/e1000_main.c
@@ -277,7 +277,7 @@ e1000_init_module(void)
 
     printk(KERN_INFO "%s\n", e1000_copyright);
 
-    ret = pci_register_driver(&e1000_driver);
+    ret = compat_pci_register_driver(&e1000_driver);
     return ret;
 }
 
Index: rtnet/drivers/experimental/rt2500/rt_rt2500pci.c
===================================================================
--- rtnet.orig/drivers/experimental/rt2500/rt_rt2500pci.c
+++ rtnet/drivers/experimental/rt2500/rt_rt2500pci.c
@@ -1239,7 +1239,7 @@ struct pci_driver rt2x00_pci_driver =
 
 static int __init rt2x00_pci_init(void) {
     rtdm_printk(KERN_INFO "Loading module: %s\n", version);
-    return pci_register_driver(&rt2x00_pci_driver);
+    return compat_pci_register_driver(&rt2x00_pci_driver);
 }
 
 static void __exit rt2x00_pci_exit(void) {
Index: rtnet/drivers/experimental/rt_3c59x.c
===================================================================
--- rtnet.orig/drivers/experimental/rt_3c59x.c
+++ rtnet/drivers/experimental/rt_3c59x.c
@@ -3358,7 +3358,7 @@ static int __init vortex_init (void)
 {
     int pci_rc;
 
-    pci_rc = pci_register_driver(&vortex_driver);
+    pci_rc = compat_pci_register_driver(&vortex_driver);
 
     if (pci_rc == 0)
         vortex_have_pci = 1;
Index: rtnet/drivers/experimental/rt_r8169.c
===================================================================
--- rtnet.orig/drivers/experimental/rt_r8169.c
+++ rtnet/drivers/experimental/rt_r8169.c
@@ -2111,7 +2111,7 @@ static int __init rtl8169_init_module (v
         r8169_debug = debug;
     }
     if (r8169_debug & DEBUG_RUN) printk("Initializing " MODULENAME "
driver");
-    return pci_register_driver (&rtl8169_pci_driver);
+    return compat_pci_register_driver (&rtl8169_pci_driver);
 }
 
 
Index: rtnet/drivers/tulip/tulip_core.c
===================================================================
--- rtnet.orig/drivers/tulip/tulip_core.c
+++ rtnet/drivers/tulip/tulip_core.c
@@ -1591,7 +1591,7 @@ static int __init tulip_init (void)
     tulip_max_interrupt_work = max_interrupt_work;
 
     /* probe for and init boards */
-    return pci_register_driver (&tulip_driver);
+    return compat_pci_register_driver (&tulip_driver);
 }
 
 


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
RTnet-users mailing list
RTnet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rtnet-users

Reply via email to