[PATCH][ATM] cleanup nicstar, suni and idt77105

From: chas williams (chas@locutus.cmf.nrl.navy.mil)
Date: Wed Mar 05 2003 - 11:16:29 EST


this patch removes the mod_inc_use_count/mod_dec_use_count from the
suni and idt77105 drivers (automatic ref counting of the suni_init
and idt77105_init symbols handles things nicely). #ifdef MODULE,
init_module and exit_module are gone. the cli() in idt77105 was
converted to a spinlock. and since both phy drivers now have .stop
functions, the nicstar can unload itself when using either.

Index: linux/drivers/atm/nicstar.c
===================================================================
RCS file: /home/chas/CVSROOT/linux/drivers/atm/nicstar.c,v
retrieving revision 1.1
diff -u -r1.1 nicstar.c
--- linux/drivers/atm/nicstar.c 20 Feb 2003 13:45:03 -0000 1.1
+++ linux/drivers/atm/nicstar.c 5 Mar 2003 01:05:21 -0000
@@ -354,11 +354,8 @@
 
       card = cards[i];
 
-#ifdef CONFIG_ATM_NICSTAR_USE_IDT77105
- if (card->max_pcr == ATM_25_PCR) {
- idt77105_stop(card->atmdev);
- }
-#endif /* CONFIG_ATM_NICSTAR_USE_IDT77105 */
+ if (card->atmdev->phy && card->atmdev->phy->stop)
+ card->atmdev->phy->stop(card->atmdev);
 
       /* Stop everything */
       writel(0x00000000, card->membase + CFG);
@@ -905,22 +902,13 @@
    card->atmdev->phy = NULL;
 
 #ifdef CONFIG_ATM_NICSTAR_USE_SUNI
- if (card->max_pcr == ATM_OC3_PCR) {
+ if (card->max_pcr == ATM_OC3_PCR)
       suni_init(card->atmdev);
-
- MOD_INC_USE_COUNT;
- /* Can't remove the nicstar driver or the suni driver would oops */
- }
 #endif /* CONFIG_ATM_NICSTAR_USE_SUNI */
 
 #ifdef CONFIG_ATM_NICSTAR_USE_IDT77105
- if (card->max_pcr == ATM_25_PCR) {
+ if (card->max_pcr == ATM_25_PCR)
       idt77105_init(card->atmdev);
- /* Note that for the IDT77105 PHY we don't need the awful
- * module count hack that the SUNI needs because we can
- * stop the '105 when the nicstar module is cleaned up.
- */
- }
 #endif /* CONFIG_ATM_NICSTAR_USE_IDT77105 */
 
    if (card->atmdev->phy && card->atmdev->phy->start)
Index: linux/drivers/atm/idt77105.c
===================================================================
RCS file: /home/chas/CVSROOT/linux/drivers/atm/idt77105.c,v
retrieving revision 1.2
diff -u -r1.2 idt77105.c
--- linux/drivers/atm/idt77105.c 26 Feb 2003 02:23:53 -0000 1.2
+++ linux/drivers/atm/idt77105.c 5 Mar 2003 00:40:49 -0000
@@ -308,7 +308,6 @@
         spin_lock_irqsave(&idt77105_priv_lock, flags);
         if (start_timer) {
                 start_timer = 0;
- spin_unlock_irqrestore(&idt77105_priv_lock, flags);
                 
                 init_timer(&stats_timer);
                 stats_timer.expires = jiffies+IDT77105_STATS_TIMER_PERIOD;
@@ -319,34 +318,12 @@
                 restart_timer.expires = jiffies+IDT77105_RESTART_TIMER_PERIOD;
                 restart_timer.function = idt77105_restart_timer_func;
                 add_timer(&restart_timer);
- return 0;
         }
         spin_unlock_irqrestore(&idt77105_priv_lock, flags);
         return 0;
 }
 
 
-static const struct atmphy_ops idt77105_ops = {
- .start = idt77105_start,
- .ioctl = idt77105_ioctl,
- .interrupt = idt77105_int,
- .stop = idt77105_stop,
-};
-
-
-int __init idt77105_init(struct atm_dev *dev)
-{
- dev->phy = &idt77105_ops;
- return 0;
-}
-
-
-/*
- * TODO: this function should be called through phy_ops
- * but that will not be possible for some time as there is
- * currently a freeze on modifying that structure
- * -- Greg Banks, 13 Sep 1999
- */
 int idt77105_stop(struct atm_dev *dev)
 {
         struct idt77105_priv *walk, *prev;
@@ -376,24 +353,29 @@
 }
 
 
+static const struct atmphy_ops idt77105_ops = {
+ .start = idt77105_start,
+ .ioctl = idt77105_ioctl,
+ .interrupt = idt77105_int,
+ .stop = idt77105_stop,
+};
 
-EXPORT_SYMBOL(idt77105_init);
-
-MODULE_LICENSE("GPL");
-
-#ifdef MODULE
 
-int init_module(void)
+int idt77105_init(struct atm_dev *dev)
 {
+ dev->phy = &idt77105_ops;
         return 0;
 }
 
+EXPORT_SYMBOL(idt77105_init);
 
-void cleanup_module(void)
+static void __exit idt77105_exit(void)
 {
         /* turn off timers */
         del_timer(&stats_timer);
         del_timer(&restart_timer);
 }
 
-#endif
+module_exit(idt77105_exit);
+
+MODULE_LICENSE("GPL");
Index: linux/drivers/atm/idt77105.h
===================================================================
RCS file: /home/chas/CVSROOT/linux/drivers/atm/idt77105.h,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 idt77105.h
--- linux/drivers/atm/idt77105.h 20 Feb 2003 13:45:03 -0000 1.1.1.1
+++ linux/drivers/atm/idt77105.h 5 Mar 2003 00:34:51 -0000
@@ -76,8 +76,7 @@
 #define IDT77105_CTRSEL_RHEC 0x01 /* W, Rx HEC Error Counter */
 
 #ifdef __KERNEL__
-int idt77105_init(struct atm_dev *dev) __init;
-int idt77105_stop(struct atm_dev *dev);
+int idt77105_init(struct atm_dev *dev);
 #endif
 
 /*
Index: linux/drivers/atm/suni.c
===================================================================
RCS file: /home/chas/CVSROOT/linux/drivers/atm/suni.c,v
retrieving revision 1.3
diff -u -r1.3 suni.c
--- linux/drivers/atm/suni.c 26 Feb 2003 15:43:30 -0000 1.3
+++ linux/drivers/atm/suni.c 5 Mar 2003 01:04:15 -0000
@@ -307,24 +307,6 @@
         return 0;
 }
 
-
 EXPORT_SYMBOL(suni_init);
 
-
 MODULE_LICENSE("GPL");
-
-#ifdef MODULE
-
-
-int init_module(void)
-{
- return 0;
-}
-
-
-void cleanup_module(void)
-{
- /* Nay */
-}
-
-#endif

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Fri Mar 07 2003 - 22:00:28 EST