diff options
Diffstat (limited to 'drivers/net/hamradio')
| -rw-r--r-- | drivers/net/hamradio/6pack.c | 16 | ||||
| -rw-r--r-- | drivers/net/hamradio/Kconfig | 4 | ||||
| -rw-r--r-- | drivers/net/hamradio/Makefile | 2 | ||||
| -rw-r--r-- | drivers/net/hamradio/baycom_epp.c | 6 | ||||
| -rw-r--r-- | drivers/net/hamradio/baycom_par.c | 5 | ||||
| -rw-r--r-- | drivers/net/hamradio/baycom_ser_fdx.c | 5 | ||||
| -rw-r--r-- | drivers/net/hamradio/baycom_ser_hdx.c | 5 | ||||
| -rw-r--r-- | drivers/net/hamradio/bpqether.c | 26 | ||||
| -rw-r--r-- | drivers/net/hamradio/dmascc.c | 9 | ||||
| -rw-r--r-- | drivers/net/hamradio/hdlcdrv.c | 6 | ||||
| -rw-r--r-- | drivers/net/hamradio/mkiss.c | 22 | ||||
| -rw-r--r-- | drivers/net/hamradio/scc.c | 9 | ||||
| -rw-r--r-- | drivers/net/hamradio/yam.c | 24 | 
13 files changed, 65 insertions, 74 deletions
diff --git a/drivers/net/hamradio/6pack.c b/drivers/net/hamradio/6pack.c index 3e5d0b6b651..66e2b19ef70 100644 --- a/drivers/net/hamradio/6pack.c +++ b/drivers/net/hamradio/6pack.c @@ -13,7 +13,6 @@   */  #include <linux/module.h> -#include <asm/system.h>  #include <asm/uaccess.h>  #include <linux/bitops.h>  #include <linux/string.h> @@ -36,7 +35,7 @@  #include <linux/tcp.h>  #include <linux/semaphore.h>  #include <linux/compat.h> -#include <asm/atomic.h> +#include <linux/atomic.h>  #define SIXPACK_VERSION    "Revision: 0.3.0" @@ -663,7 +662,8 @@ static int sixpack_open(struct tty_struct *tty)  	tty->receive_room = 65536;  	/* Now we're ready to register. */ -	if (register_netdev(dev)) +	err = register_netdev(dev); +	if (err)  		goto out_free;  	tnc_init(sp); @@ -692,10 +692,10 @@ static void sixpack_close(struct tty_struct *tty)  {  	struct sixpack *sp; -	write_lock(&disc_data_lock); +	write_lock_bh(&disc_data_lock);  	sp = tty->disc_data;  	tty->disc_data = NULL; -	write_unlock(&disc_data_lock); +	write_unlock_bh(&disc_data_lock);  	if (!sp)  		return; @@ -812,9 +812,9 @@ static struct tty_ldisc_ops sp_ldisc = {  /* Initialize 6pack control device -- register 6pack line discipline */ -static const char msg_banner[]  __initdata = KERN_INFO \ +static const char msg_banner[]  __initconst = KERN_INFO \  	"AX.25: 6pack driver, " SIXPACK_VERSION "\n"; -static const char msg_regfail[] __initdata = KERN_ERR  \ +static const char msg_regfail[] __initconst = KERN_ERR  \  	"6pack: can't register line discipline (err = %d)\n";  static int __init sixpack_init_driver(void) @@ -830,7 +830,7 @@ static int __init sixpack_init_driver(void)  	return status;  } -static const char msg_unregfail[] __exitdata = KERN_ERR \ +static const char msg_unregfail[] = KERN_ERR \  	"6pack: can't unregister line discipline (err = %d)\n";  static void __exit sixpack_exit_driver(void) diff --git a/drivers/net/hamradio/Kconfig b/drivers/net/hamradio/Kconfig index 95dbcfdf131..bf5e5968768 100644 --- a/drivers/net/hamradio/Kconfig +++ b/drivers/net/hamradio/Kconfig @@ -1,6 +1,6 @@  config MKISS  	tristate "Serial port KISS driver" -	depends on AX25 +	depends on AX25 && TTY  	select CRC16  	---help---  	  KISS is a protocol used for the exchange of data between a computer @@ -18,7 +18,7 @@ config MKISS  config 6PACK  	tristate "Serial port 6PACK driver" -	depends on AX25 +	depends on AX25 && TTY  	---help---  	  6pack is a transmission protocol for the data exchange between your  	  PC and your TNC (the Terminal Node Controller acts as a kind of diff --git a/drivers/net/hamradio/Makefile b/drivers/net/hamradio/Makefile index 9def86704a9..10409607002 100644 --- a/drivers/net/hamradio/Makefile +++ b/drivers/net/hamradio/Makefile @@ -3,7 +3,7 @@  #  #  # 19971130 	Moved the amateur radio related network drivers from  -#		drivers/net/ to drivers/hamradio for easier maintainance. +#		drivers/net/ to drivers/hamradio for easier maintenance.  #               Joerg Reuter DL1BKE <jreuter@yaina.de>  #  # 20000806	Rewritten to use lists instead of if-statements. diff --git a/drivers/net/hamradio/baycom_epp.c b/drivers/net/hamradio/baycom_epp.c index a3c0dc9d8b9..484f77ec2ce 100644 --- a/drivers/net/hamradio/baycom_epp.c +++ b/drivers/net/hamradio/baycom_epp.c @@ -69,7 +69,7 @@ static const char paranoia_str[] = KERN_ERR  static const char bc_drvname[] = "baycom_epp";  static const char bc_drvinfo[] = KERN_INFO "baycom_epp: (C) 1998-2000 Thomas Sailer, HB9JNX/AE4WA\n" -"baycom_epp: version 0.7 compiled " __TIME__ " " __DATE__ "\n"; +"baycom_epp: version 0.7\n";  /* --------------------------------------------------------------------- */ @@ -449,7 +449,7 @@ static int transmit(struct baycom_state *bc, int cnt, unsigned char stat)  			if ((--bc->hdlctx.slotcnt) > 0)  				return 0;  			bc->hdlctx.slotcnt = bc->ch_params.slottime; -			if ((random32() % 256) > bc->ch_params.ppersist) +			if ((prandom_u32() % 256) > bc->ch_params.ppersist)  				return 0;  		}  	} @@ -1162,7 +1162,7 @@ static void baycom_probe(struct net_device *dev)  /*   * command line settable parameters   */ -static const char *mode[NR_PORTS] = { "", }; +static char *mode[NR_PORTS] = { "", };  static int iobase[NR_PORTS] = { 0x378, };  module_param_array(mode, charp, NULL, 0); diff --git a/drivers/net/hamradio/baycom_par.c b/drivers/net/hamradio/baycom_par.c index 5f5af9a606f..acb636963e9 100644 --- a/drivers/net/hamradio/baycom_par.c +++ b/drivers/net/hamradio/baycom_par.c @@ -86,7 +86,6 @@  #include <linux/bitops.h>  #include <linux/jiffies.h> -#include <asm/system.h>  #include <asm/uaccess.h>  /* --------------------------------------------------------------------- */ @@ -102,7 +101,7 @@  static const char bc_drvname[] = "baycom_par";  static const char bc_drvinfo[] = KERN_INFO "baycom_par: (C) 1996-2000 Thomas Sailer, HB9JNX/AE4WA\n" -"baycom_par: version 0.9 compiled " __TIME__ " " __DATE__ "\n"; +"baycom_par: version 0.9\n";  /* --------------------------------------------------------------------- */ @@ -477,7 +476,7 @@ static int baycom_ioctl(struct net_device *dev, struct ifreq *ifr,  /*   * command line settable parameters   */ -static const char *mode[NR_PORTS] = { "picpar", }; +static char *mode[NR_PORTS] = { "picpar", };  static int iobase[NR_PORTS] = { 0x378, };  module_param_array(mode, charp, NULL, 0); diff --git a/drivers/net/hamradio/baycom_ser_fdx.c b/drivers/net/hamradio/baycom_ser_fdx.c index 3e25f10cabd..636b65c66d4 100644 --- a/drivers/net/hamradio/baycom_ser_fdx.c +++ b/drivers/net/hamradio/baycom_ser_fdx.c @@ -76,6 +76,7 @@  #include <linux/ioport.h>  #include <linux/string.h>  #include <linux/init.h> +#include <linux/interrupt.h>  #include <linux/hdlcdrv.h>  #include <linux/baycom.h>  #include <linux/jiffies.h> @@ -92,7 +93,7 @@  static const char bc_drvname[] = "baycom_ser_fdx";  static const char bc_drvinfo[] = KERN_INFO "baycom_ser_fdx: (C) 1996-2000 Thomas Sailer, HB9JNX/AE4WA\n" -"baycom_ser_fdx: version 0.10 compiled " __TIME__ " " __DATE__ "\n"; +"baycom_ser_fdx: version 0.10\n";  /* --------------------------------------------------------------------- */ @@ -444,7 +445,7 @@ static int ser12_open(struct net_device *dev)  	outb(0, FCR(dev->base_addr));  /* disable FIFOs */  	outb(0x0d, MCR(dev->base_addr));  	outb(0, IER(dev->base_addr)); -	if (request_irq(dev->irq, ser12_interrupt, IRQF_DISABLED | IRQF_SHARED, +	if (request_irq(dev->irq, ser12_interrupt, IRQF_SHARED,  			"baycom_ser_fdx", dev)) {  		release_region(dev->base_addr, SER12_EXTENT);  		return -EBUSY; diff --git a/drivers/net/hamradio/baycom_ser_hdx.c b/drivers/net/hamradio/baycom_ser_hdx.c index 1686f6dcbbc..f9a8976195b 100644 --- a/drivers/net/hamradio/baycom_ser_hdx.c +++ b/drivers/net/hamradio/baycom_ser_hdx.c @@ -66,6 +66,7 @@  #include <linux/ioport.h>  #include <linux/string.h>  #include <linux/init.h> +#include <linux/interrupt.h>  #include <asm/uaccess.h>  #include <asm/io.h>  #include <linux/hdlcdrv.h> @@ -80,7 +81,7 @@  static const char bc_drvname[] = "baycom_ser_hdx";  static const char bc_drvinfo[] = KERN_INFO "baycom_ser_hdx: (C) 1996-2000 Thomas Sailer, HB9JNX/AE4WA\n" -"baycom_ser_hdx: version 0.10 compiled " __TIME__ " " __DATE__ "\n"; +"baycom_ser_hdx: version 0.10\n";  /* --------------------------------------------------------------------- */ @@ -489,7 +490,7 @@ static int ser12_open(struct net_device *dev)  	outb(0, FCR(dev->base_addr));  /* disable FIFOs */  	outb(0x0d, MCR(dev->base_addr));  	outb(0, IER(dev->base_addr)); -	if (request_irq(dev->irq, ser12_interrupt, IRQF_DISABLED | IRQF_SHARED, +	if (request_irq(dev->irq, ser12_interrupt, IRQF_SHARED,  			"baycom_ser12", dev)) {  		release_region(dev->base_addr, SER12_EXTENT);         		return -EBUSY; diff --git a/drivers/net/hamradio/bpqether.c b/drivers/net/hamradio/bpqether.c index ac1d323c5eb..d50b23cf9ea 100644 --- a/drivers/net/hamradio/bpqether.c +++ b/drivers/net/hamradio/bpqether.c @@ -69,7 +69,6 @@  #include <linux/if_arp.h>  #include <linux/skbuff.h>  #include <net/sock.h> -#include <asm/system.h>  #include <asm/uaccess.h>  #include <linux/mm.h>  #include <linux/interrupt.h> @@ -88,7 +87,7 @@  #include <linux/bpqether.h> -static const char banner[] __initdata = KERN_INFO \ +static const char banner[] __initconst = KERN_INFO \  	"AX.25: bpqether driver version 004\n";  static char bcast_addr[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}; @@ -104,7 +103,7 @@ static struct packet_type bpq_packet_type __read_mostly = {  };  static struct notifier_block bpq_dev_notifier = { -	.notifier_call =bpq_device_event, +	.notifier_call = bpq_device_event,  }; @@ -209,7 +208,7 @@ static int bpq_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_ty  	eth = eth_hdr(skb);  	if (!(bpq->acpt_addr[0] & 0x01) && -	    memcmp(eth->h_source, bpq->acpt_addr, ETH_ALEN)) +	    !ether_addr_equal(eth->h_source, bpq->acpt_addr))  		goto drop_unlock;  	if (skb_cow(skb, sizeof(struct ethhdr))) @@ -400,13 +399,14 @@ static void *bpq_seq_start(struct seq_file *seq, loff_t *pos)  static void *bpq_seq_next(struct seq_file *seq, void *v, loff_t *pos)  {  	struct list_head *p; +	struct bpqdev *bpqdev = v;  	++*pos;  	if (v == SEQ_START_TOKEN) -		p = rcu_dereference(bpq_devices.next); +		p = rcu_dereference(list_next_rcu(&bpq_devices));  	else -		p = rcu_dereference(((struct bpqdev *)v)->bpq_list.next); +		p = rcu_dereference(list_next_rcu(&bpqdev->bpq_list));  	return (p == &bpq_devices) ? NULL   		: list_entry(p, struct bpqdev, bpq_list); @@ -515,10 +515,6 @@ static int bpq_new_device(struct net_device *edev)  	memcpy(bpq->dest_addr, bcast_addr, sizeof(bpq_eth_addr));  	memcpy(bpq->acpt_addr, bcast_addr, sizeof(bpq_eth_addr)); -	err = dev_alloc_name(ndev, ndev->name); -	if (err < 0)  -		goto error; -  	err = register_netdevice(ndev);  	if (err)  		goto error; @@ -548,9 +544,10 @@ static void bpq_free_device(struct net_device *ndev)  /*   *	Handle device status changes.   */ -static int bpq_device_event(struct notifier_block *this,unsigned long event, void *ptr) +static int bpq_device_event(struct notifier_block *this, +			    unsigned long event, void *ptr)  { -	struct net_device *dev = (struct net_device *)ptr; +	struct net_device *dev = netdev_notifier_info_to_dev(ptr);  	if (!net_eq(dev_net(dev), &init_net))  		return NOTIFY_DONE; @@ -590,7 +587,8 @@ static int bpq_device_event(struct notifier_block *this,unsigned long event, voi  static int __init bpq_init_driver(void)  {  #ifdef CONFIG_PROC_FS -	if (!proc_net_fops_create(&init_net, "bpqether", S_IRUGO, &bpq_info_fops)) { +	if (!proc_create("bpqether", S_IRUGO, init_net.proc_net, +			 &bpq_info_fops)) {  		printk(KERN_ERR  			"bpq: cannot create /proc/net/bpqether entry.\n");  		return -ENOENT; @@ -614,7 +612,7 @@ static void __exit bpq_cleanup_driver(void)  	unregister_netdevice_notifier(&bpq_dev_notifier); -	proc_net_remove(&init_net, "bpqether"); +	remove_proc_entry("bpqether", init_net.proc_net);  	rtnl_lock();  	while (!list_empty(&bpq_devices)) { diff --git a/drivers/net/hamradio/dmascc.c b/drivers/net/hamradio/dmascc.c index 52b14256e2c..6636022a102 100644 --- a/drivers/net/hamradio/dmascc.c +++ b/drivers/net/hamradio/dmascc.c @@ -36,7 +36,7 @@  #include <linux/rtnetlink.h>  #include <linux/sockios.h>  #include <linux/workqueue.h> -#include <asm/atomic.h> +#include <linux/atomic.h>  #include <asm/dma.h>  #include <asm/io.h>  #include <asm/irq.h> @@ -463,13 +463,8 @@ static int __init setup_adapter(int card_base, int type, int n)  	/* Initialize what is necessary for write_scc and write_scc_data */  	info = kzalloc(sizeof(struct scc_info), GFP_KERNEL | GFP_DMA); -	if (!info) { -		printk(KERN_ERR "dmascc: " -		       "could not allocate memory for %s at %#3x\n", -		       hw[type].name, card_base); +	if (!info)  		goto out; -	} -  	info->dev[0] = alloc_netdev(0, "", dev_setup);  	if (!info->dev[0]) { diff --git a/drivers/net/hamradio/hdlcdrv.c b/drivers/net/hamradio/hdlcdrv.c index 5b37579e84b..5d78c1d08ab 100644 --- a/drivers/net/hamradio/hdlcdrv.c +++ b/drivers/net/hamradio/hdlcdrv.c @@ -389,7 +389,7 @@ void hdlcdrv_arbitrate(struct net_device *dev, struct hdlcdrv_state *s)  	if ((--s->hdlctx.slotcnt) > 0)  		return;  	s->hdlctx.slotcnt = s->ch_params.slottime; -	if ((random32() % 256) > s->ch_params.ppersist) +	if ((prandom_u32() % 256) > s->ch_params.ppersist)  		return;  	start_tx(dev, s);  } @@ -571,6 +571,8 @@ static int hdlcdrv_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)  	case HDLCDRVCTL_CALIBRATE:  		if(!capable(CAP_SYS_RAWIO))  			return -EPERM; +		if (bi.data.calibrate > INT_MAX / s->par.bitrate) +			return -EINVAL;  		s->hdlctx.calibrate = bi.data.calibrate * s->par.bitrate / 16;  		return 0; @@ -749,7 +751,7 @@ EXPORT_SYMBOL(hdlcdrv_unregister);  static int __init hdlcdrv_init_driver(void)  {  	printk(KERN_INFO "hdlcdrv: (C) 1996-2000 Thomas Sailer HB9JNX/AE4WA\n"); -	printk(KERN_INFO "hdlcdrv: version 0.8 compiled " __TIME__ " " __DATE__ "\n"); +	printk(KERN_INFO "hdlcdrv: version 0.8\n");  	return 0;  } diff --git a/drivers/net/hamradio/mkiss.c b/drivers/net/hamradio/mkiss.c index 4c628393c8b..8a6c720a4cc 100644 --- a/drivers/net/hamradio/mkiss.c +++ b/drivers/net/hamradio/mkiss.c @@ -9,15 +9,13 @@   *  for more details.   *   *  You should have received a copy of the GNU General Public License along - *  with this program; if not, write to the Free Software Foundation, Inc., - *  59 Temple Place - Suite 330, Boston MA 02111-1307, USA. + *  with this program; if not, see <http://www.gnu.org/licenses/>.   *   * Copyright (C) Hans Alblas PE1AYX <hans@esrac.ele.tue.nl>   * Copyright (C) 2004, 05 Ralf Baechle DL5RB <ralf@linux-mips.org>   * Copyright (C) 2004, 05 Thomas Osterried DL9SAU <thomas@x-berg.in-berlin.de>   */  #include <linux/module.h> -#include <asm/system.h>  #include <linux/bitops.h>  #include <asm/uaccess.h>  #include <linux/crc16.h> @@ -486,7 +484,7 @@ static void ax_encaps(struct net_device *dev, unsigned char *icp, int len)  			return;  		default: -			count = kiss_esc(p, (unsigned char *)ax->xbuff, len); +			count = kiss_esc(p, ax->xbuff, len);  		}  	} else {  		unsigned short crc; @@ -498,7 +496,7 @@ static void ax_encaps(struct net_device *dev, unsigned char *icp, int len)  		case CRC_MODE_SMACK:  			*p |= 0x80;  			crc = swab16(crc16(0, p, len)); -			count = kiss_esc_crc(p, (unsigned char *)ax->xbuff, crc, len+2); +			count = kiss_esc_crc(p, ax->xbuff, crc, len+2);  			break;  		case CRC_MODE_FLEX_TEST:  			ax->crcmode = CRC_MODE_NONE; @@ -507,11 +505,11 @@ static void ax_encaps(struct net_device *dev, unsigned char *icp, int len)  		case CRC_MODE_FLEX:  			*p |= 0x20;  			crc = calc_crc_flex(p, len); -			count = kiss_esc_crc(p, (unsigned char *)ax->xbuff, crc, len+2); +			count = kiss_esc_crc(p, ax->xbuff, crc, len+2);  			break;  		default: -			count = kiss_esc(p, (unsigned char *)ax->xbuff, len); +			count = kiss_esc(p, ax->xbuff, len);  		}    	}  	spin_unlock_bh(&ax->buflock); @@ -813,10 +811,10 @@ static void mkiss_close(struct tty_struct *tty)  {  	struct mkiss *ax; -	write_lock(&disc_data_lock); +	write_lock_bh(&disc_data_lock);  	ax = tty->disc_data;  	tty->disc_data = NULL; -	write_unlock(&disc_data_lock); +	write_unlock_bh(&disc_data_lock);  	if (!ax)  		return; @@ -998,9 +996,9 @@ static struct tty_ldisc_ops ax_ldisc = {  	.write_wakeup	= mkiss_write_wakeup  }; -static const char banner[] __initdata = KERN_INFO \ +static const char banner[] __initconst = KERN_INFO \  	"mkiss: AX.25 Multikiss, Hans Albas PE1AYX\n"; -static const char msg_regfail[] __initdata = KERN_ERR \ +static const char msg_regfail[] __initconst = KERN_ERR \  	"mkiss: can't register line discipline (err = %d)\n";  static int __init mkiss_init_driver(void) @@ -1016,7 +1014,7 @@ static int __init mkiss_init_driver(void)  	return status;  } -static const char msg_unregfail[] __exitdata = KERN_ERR \ +static const char msg_unregfail[] = KERN_ERR \  	"mkiss: can't unregister line discipline (err = %d)\n";  static void __exit mkiss_exit_driver(void) diff --git a/drivers/net/hamradio/scc.c b/drivers/net/hamradio/scc.c index 33655814448..4bc6ee8e798 100644 --- a/drivers/net/hamradio/scc.c +++ b/drivers/net/hamradio/scc.c @@ -177,13 +177,12 @@  #include <net/ax25.h>  #include <asm/irq.h> -#include <asm/system.h>  #include <asm/io.h>  #include <asm/uaccess.h>  #include "z8530.h" -static const char banner[] __initdata = KERN_INFO \ +static const char banner[] __initconst = KERN_INFO \  	"AX.25: Z8530 SCC driver version "VERSION".dl1bke\n";  static void t_dwait(unsigned long); @@ -1735,7 +1734,7 @@ static int scc_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)  			if (!Ivec[hwcfg.irq].used && hwcfg.irq)  			{  				if (request_irq(hwcfg.irq, scc_isr, -						IRQF_DISABLED, "AX.25 SCC", +						0, "AX.25 SCC",  						(void *)(long) hwcfg.irq))  					printk(KERN_WARNING "z8530drv: warning, cannot get IRQ %d\n", hwcfg.irq);  				else @@ -2119,7 +2118,7 @@ static int __init scc_init_driver (void)  	}  	rtnl_unlock(); -	proc_net_fops_create(&init_net, "z8530drv", 0, &scc_net_seq_fops); +	proc_create("z8530drv", 0, init_net.proc_net, &scc_net_seq_fops);  	return 0;  } @@ -2174,7 +2173,7 @@ static void __exit scc_cleanup_driver(void)  	if (Vector_Latch)  		release_region(Vector_Latch, 1); -	proc_net_remove(&init_net, "z8530drv"); +	remove_proc_entry("z8530drv", init_net.proc_net);  }  MODULE_AUTHOR("Joerg Reuter <jreuter@yaina.de>"); diff --git a/drivers/net/hamradio/yam.c b/drivers/net/hamradio/yam.c index 4e7d1d0a234..81901659cc9 100644 --- a/drivers/net/hamradio/yam.c +++ b/drivers/net/hamradio/yam.c @@ -30,7 +30,7 @@   *   0.1 F1OAT 07.06.98  Add timer polling routine for channel arbitration   *   0.2 F6FBB 08.06.98  Added delay after FPGA programming   *   0.3 F6FBB 29.07.98  Delayed PTT implementation for dupmode=2 - *   0.4 F6FBB 30.07.98  Added TxTail, Slottime and Persistance + *   0.4 F6FBB 30.07.98  Added TxTail, Slottime and Persistence   *   0.5 F6FBB 01.08.98  Shared IRQs, /proc/net and network statistics   *   0.6 F6FBB 25.08.98  Added 1200Bds format   *   0.7 F6FBB 12.09.98  Added to the kernel configuration @@ -52,7 +52,6 @@  #include <linux/bitops.h>  #include <linux/random.h>  #include <asm/io.h> -#include <asm/system.h>  #include <linux/interrupt.h>  #include <linux/ioport.h>  #include <linux/firmware.h> @@ -77,7 +76,7 @@  /* --------------------------------------------------------------------- */  static const char yam_drvname[] = "yam"; -static const char yam_drvinfo[] __initdata = KERN_INFO \ +static const char yam_drvinfo[] __initconst = KERN_INFO \  	"YAM driver version 0.8 by F1OAT/F6FBB\n";  /* --------------------------------------------------------------------- */ @@ -396,14 +395,13 @@ static unsigned char *add_mcs(unsigned char *bits, int bitrate,  	while (p) {  		if (p->bitrate == bitrate) {  			memcpy(p->bits, bits, YAM_FPGA_SIZE); -			return p->bits; +			goto out;  		}  		p = p->next;  	}  	/* Allocate a new mcs */  	if ((p = kmalloc(sizeof(struct yam_mcs), GFP_KERNEL)) == NULL) { -		printk(KERN_WARNING "YAM: no memory to allocate mcs\n");  		release_firmware(fw);  		return NULL;  	} @@ -411,7 +409,7 @@ static unsigned char *add_mcs(unsigned char *bits, int bitrate,  	p->bitrate = bitrate;  	p->next = yam_data;  	yam_data = p; - + out:  	release_firmware(fw);  	return p->bits;  } @@ -640,7 +638,7 @@ static void yam_arbitrate(struct net_device *dev)  	yp->slotcnt = yp->slot / 10;  	/* is random > persist ? */ -	if ((random32() % 256) > yp->pers) +	if ((prandom_u32() % 256) > yp->pers)  		return;  	yam_start_tx(dev, yp); @@ -868,7 +866,7 @@ static int yam_open(struct net_device *dev)  	printk(KERN_INFO "Trying %s at iobase 0x%lx irq %u\n", dev->name, dev->base_addr, dev->irq); -	if (!dev || !yp->bitrate) +	if (!yp->bitrate)  		return -ENXIO;  	if (!dev->base_addr || dev->base_addr > 0x1000 - YAM_EXTENT ||  		dev->irq < 2 || dev->irq > 15) { @@ -890,7 +888,7 @@ static int yam_open(struct net_device *dev)  		goto out_release_base;  	}  	outb(0, IER(dev->base_addr)); -	if (request_irq(dev->irq, yam_interrupt, IRQF_DISABLED | IRQF_SHARED, dev->name, dev)) { +	if (request_irq(dev->irq, yam_interrupt, IRQF_SHARED, dev->name, dev)) {  		printk(KERN_ERR "%s: irq %d busy\n", dev->name, dev->irq);  		ret = -EBUSY;  		goto out_release_base; @@ -977,7 +975,6 @@ static int yam_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)  			return -EINVAL;		/* Cannot change this parameter when up */  		if ((ym = kmalloc(sizeof(struct yamdrv_ioctl_mcs), GFP_KERNEL)) == NULL)  			return -ENOBUFS; -		ym->bitrate = 9600;  		if (copy_from_user(ym, ifr->ifr_data, sizeof(struct yamdrv_ioctl_mcs))) {  			kfree(ym);  			return -EFAULT; @@ -1060,6 +1057,7 @@ static int yam_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)  		break;  	case SIOCYAMGCFG: +		memset(&yi, 0, sizeof(yi));  		yi.cfg.mask = 0xffffffff;  		yi.cfg.iobase = yp->iobase;  		yi.cfg.irq = yp->irq; @@ -1169,7 +1167,7 @@ static int __init yam_init_driver(void)  	yam_timer.expires = jiffies + HZ / 100;  	add_timer(&yam_timer); -	proc_net_fops_create(&init_net, "yam", S_IRUGO, &yam_info_fops); +	proc_create("yam", S_IRUGO, init_net.proc_net, &yam_info_fops);  	return 0;   error:  	while (--i >= 0) { @@ -1186,7 +1184,7 @@ static void __exit yam_cleanup_driver(void)  	struct yam_mcs *p;  	int i; -	del_timer(&yam_timer); +	del_timer_sync(&yam_timer);  	for (i = 0; i < NR_PORTS; i++) {  		struct net_device *dev = yam_devs[i];  		if (dev) { @@ -1201,7 +1199,7 @@ static void __exit yam_cleanup_driver(void)  		kfree(p);  	} -	proc_net_remove(&init_net, "yam"); +	remove_proc_entry("yam", init_net.proc_net);  }  /* --------------------------------------------------------------------- */  | 
