Received: with ECARTIS (v1.0.0; list netdev); Wed, 13 Aug 2003 17:47:55 -0700 (PDT) Received: from mail.osdl.org (fw.osdl.org [65.172.181.6]) by oss.sgi.com (8.12.9/8.12.9) with SMTP id h7E0llFl030151 for ; Wed, 13 Aug 2003 17:47:48 -0700 Received: from dell_ss3.pdx.osdl.net (dell_ss3.pdx.osdl.net [172.20.1.60]) by mail.osdl.org (8.11.6/8.11.6) with SMTP id h7E0l7o14635; Wed, 13 Aug 2003 17:47:10 -0700 Date: Wed, 13 Aug 2003 17:46:58 -0700 From: Stephen Hemminger To: Mike Phillips , "David S. Miller" Cc: linux-tr@linuxtr.net, netdev@oss.sgi.com Subject: [PATCH] ibmtr - get rid of MOD_INC/DEC Message-Id: <20030813174658.2c5125af.shemminger@osdl.org> Organization: Open Source Development Lab X-Mailer: Sylpheed version 0.9.4claws (GTK+ 1.2.10; i686-pc-linux-gnu) X-Face: &@E+xe?c%:&e4D{>f1O<&U>2qwRREG5!}7R4;D<"NO^UI2mJ[eEOA2*3>(`Th.yP,VDPo9$ /`~cw![cmj~~jWe?AHY7D1S+\}5brN0k*NE?pPh_'_d>6;XGG[\KDRViCfumZT3@[ Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-archive-position: 4829 X-ecartis-version: Ecartis v1.0.0 Sender: netdev-bounce@oss.sgi.com Errors-to: netdev-bounce@oss.sgi.com X-original-sender: shemminger@osdl.org Precedence: bulk X-list: netdev With the new module system MOD_INC/MOD_DEC are no longer necessary. Also changed to new module init/exit macros for function setup. The module exit code can sleep, so calling schedule_timeout is better than spinning. Don't have real hardware, so I tested it by short circuiting the probe(). diff -Nru a/drivers/net/tokenring/ibmtr.c b/drivers/net/tokenring/ibmtr.c --- a/drivers/net/tokenring/ibmtr.c Wed Aug 13 17:44:49 2003 +++ b/drivers/net/tokenring/ibmtr.c Wed Aug 13 17:44:49 2003 @@ -876,7 +876,6 @@ if (i==0) break; if (ti->open_status == OPEN && ti->sap_status==OPEN) { netif_start_queue(dev); - MOD_INC_USE_COUNT; DPRINTK("Adapter is up and running\n"); return 0; } @@ -1041,7 +1040,6 @@ netif_stop_queue(dev); DPRINTK("Adapter is closed.\n"); - MOD_DEC_USE_COUNT; return 0; } @@ -1918,7 +1916,7 @@ MODULE_PARM(irq, "1-" __MODULE_STRING(IBMTR_MAX_ADAPTERS) "i"); MODULE_PARM(mem, "1-" __MODULE_STRING(IBMTR_MAX_ADAPTERS) "i"); -int init_module(void) +static int __init ibmtr_init(void) { int i; int count=0; @@ -1948,21 +1946,24 @@ if (count) return 0; printk("ibmtr: register_netdev() returned non-zero.\n"); return -EIO; -} /*init_module */ +} +module_init(ibmtr_init); -void cleanup_module(void) +static void __exit ibmtr_cleanup(void) { - int i,j; + int i; for (i = 0; i < IBMTR_MAX_ADAPTERS; i++){ if (!dev_ibmtr[i]) continue; if (dev_ibmtr[i]->base_addr) { outb(0,dev_ibmtr[i]->base_addr+ADAPTRESET); - for(j=jiffies+TR_RST_TIME; - time_before_eq(jiffies,j);) ; + + schedule_timeout(TR_RST_TIME); /* wait 50ms */ + outb(0,dev_ibmtr[i]->base_addr+ADAPTRESETREL); } + unregister_netdev(dev_ibmtr[i]); free_irq(dev_ibmtr[i]->irq, dev_ibmtr[i]); release_region(dev_ibmtr[i]->base_addr, IBMTR_IO_EXTENT); @@ -1978,4 +1979,5 @@ dev_ibmtr[i] = NULL; } } -#endif /* MODULE */ +module_exit(ibmtr_cleanup); +#endif