aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wan
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
commitada47b5fe13d89735805b566185f4885f5a3f750 (patch)
tree644b88f8a71896307d71438e9b3af49126ffb22b /drivers/net/wan
parent43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff)
parent3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff)
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/net/wan')
-rw-r--r--drivers/net/wan/cosa.c30
-rw-r--r--drivers/net/wan/dlci.c14
-rw-r--r--drivers/net/wan/dscc4.c5
-rw-r--r--drivers/net/wan/farsync.c15
-rw-r--r--drivers/net/wan/hd64570.c1
-rw-r--r--drivers/net/wan/hd64572.c1
-rw-r--r--drivers/net/wan/hdlc.c4
-rw-r--r--drivers/net/wan/hdlc_cisco.c9
-rw-r--r--drivers/net/wan/hdlc_fr.c8
-rw-r--r--drivers/net/wan/hdlc_ppp.c6
-rw-r--r--drivers/net/wan/hdlc_raw.c1
-rw-r--r--drivers/net/wan/hdlc_raw_eth.c2
-rw-r--r--drivers/net/wan/hdlc_x25.c6
-rw-r--r--drivers/net/wan/hostess_sv11.c3
-rw-r--r--drivers/net/wan/ixp4xx_hss.c1
-rw-r--r--drivers/net/wan/lapbether.c1
-rw-r--r--drivers/net/wan/lmc/lmc_main.c6
-rw-r--r--drivers/net/wan/lmc/lmc_media.c1
-rw-r--r--drivers/net/wan/lmc/lmc_proto.c1
-rw-r--r--drivers/net/wan/n2.c2
-rw-r--r--drivers/net/wan/pc300_drv.c20
-rw-r--r--drivers/net/wan/pc300too.c2
-rw-r--r--drivers/net/wan/pci200syn.c2
-rw-r--r--drivers/net/wan/sbni.c29
-rw-r--r--drivers/net/wan/sdla.c2
-rw-r--r--drivers/net/wan/sealevel.c14
-rw-r--r--drivers/net/wan/wanxl.c2
-rw-r--r--drivers/net/wan/x25_asy.c24
-rw-r--r--drivers/net/wan/z85230.c1
29 files changed, 121 insertions, 92 deletions
diff --git a/drivers/net/wan/cosa.c b/drivers/net/wan/cosa.c
index 8e25ca7080c7..f0bd70fb650c 100644
--- a/drivers/net/wan/cosa.c
+++ b/drivers/net/wan/cosa.c
@@ -297,8 +297,8 @@ static ssize_t cosa_write(struct file *file,
297static unsigned int cosa_poll(struct file *file, poll_table *poll); 297static unsigned int cosa_poll(struct file *file, poll_table *poll);
298static int cosa_open(struct inode *inode, struct file *file); 298static int cosa_open(struct inode *inode, struct file *file);
299static int cosa_release(struct inode *inode, struct file *file); 299static int cosa_release(struct inode *inode, struct file *file);
300static int cosa_chardev_ioctl(struct inode *inode, struct file *file, 300static long cosa_chardev_ioctl(struct file *file, unsigned int cmd,
301 unsigned int cmd, unsigned long arg); 301 unsigned long arg);
302#ifdef COSA_FASYNC_WORKING 302#ifdef COSA_FASYNC_WORKING
303static int cosa_fasync(struct inode *inode, struct file *file, int on); 303static int cosa_fasync(struct inode *inode, struct file *file, int on);
304#endif 304#endif
@@ -309,7 +309,7 @@ static const struct file_operations cosa_fops = {
309 .read = cosa_read, 309 .read = cosa_read,
310 .write = cosa_write, 310 .write = cosa_write,
311 .poll = cosa_poll, 311 .poll = cosa_poll,
312 .ioctl = cosa_chardev_ioctl, 312 .unlocked_ioctl = cosa_chardev_ioctl,
313 .open = cosa_open, 313 .open = cosa_open,
314 .release = cosa_release, 314 .release = cosa_release,
315#ifdef COSA_FASYNC_WORKING 315#ifdef COSA_FASYNC_WORKING
@@ -811,7 +811,7 @@ static ssize_t cosa_read(struct file *file,
811 cosa_enable_rx(chan); 811 cosa_enable_rx(chan);
812 spin_lock_irqsave(&cosa->lock, flags); 812 spin_lock_irqsave(&cosa->lock, flags);
813 add_wait_queue(&chan->rxwaitq, &wait); 813 add_wait_queue(&chan->rxwaitq, &wait);
814 while(!chan->rx_status) { 814 while (!chan->rx_status) {
815 current->state = TASK_INTERRUPTIBLE; 815 current->state = TASK_INTERRUPTIBLE;
816 spin_unlock_irqrestore(&cosa->lock, flags); 816 spin_unlock_irqrestore(&cosa->lock, flags);
817 schedule(); 817 schedule();
@@ -896,7 +896,7 @@ static ssize_t cosa_write(struct file *file,
896 896
897 spin_lock_irqsave(&cosa->lock, flags); 897 spin_lock_irqsave(&cosa->lock, flags);
898 add_wait_queue(&chan->txwaitq, &wait); 898 add_wait_queue(&chan->txwaitq, &wait);
899 while(!chan->tx_status) { 899 while (!chan->tx_status) {
900 current->state = TASK_INTERRUPTIBLE; 900 current->state = TASK_INTERRUPTIBLE;
901 spin_unlock_irqrestore(&cosa->lock, flags); 901 spin_unlock_irqrestore(&cosa->lock, flags);
902 schedule(); 902 schedule();
@@ -1153,7 +1153,7 @@ static int cosa_ioctl_common(struct cosa_data *cosa,
1153 struct channel_data *channel, unsigned int cmd, unsigned long arg) 1153 struct channel_data *channel, unsigned int cmd, unsigned long arg)
1154{ 1154{
1155 void __user *argp = (void __user *)arg; 1155 void __user *argp = (void __user *)arg;
1156 switch(cmd) { 1156 switch (cmd) {
1157 case COSAIORSET: /* Reset the device */ 1157 case COSAIORSET: /* Reset the device */
1158 if (!capable(CAP_NET_ADMIN)) 1158 if (!capable(CAP_NET_ADMIN))
1159 return -EACCES; 1159 return -EACCES;
@@ -1205,12 +1205,18 @@ static int cosa_net_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
1205 return hdlc_ioctl(dev, ifr, cmd); 1205 return hdlc_ioctl(dev, ifr, cmd);
1206} 1206}
1207 1207
1208static int cosa_chardev_ioctl(struct inode *inode, struct file *file, 1208static long cosa_chardev_ioctl(struct file *file, unsigned int cmd,
1209 unsigned int cmd, unsigned long arg) 1209 unsigned long arg)
1210{ 1210{
1211 struct channel_data *channel = file->private_data; 1211 struct channel_data *channel = file->private_data;
1212 struct cosa_data *cosa = channel->cosa; 1212 struct cosa_data *cosa;
1213 return cosa_ioctl_common(cosa, channel, cmd, arg); 1213 long ret;
1214
1215 lock_kernel();
1216 cosa = channel->cosa;
1217 ret = cosa_ioctl_common(cosa, channel, cmd, arg);
1218 unlock_kernel();
1219 return ret;
1214} 1220}
1215 1221
1216 1222
@@ -1698,7 +1704,7 @@ static inline void tx_interrupt(struct cosa_data *cosa, int status)
1698 spin_unlock_irqrestore(&cosa->lock, flags); 1704 spin_unlock_irqrestore(&cosa->lock, flags);
1699 return; 1705 return;
1700 } 1706 }
1701 while(1) { 1707 while (1) {
1702 cosa->txchan++; 1708 cosa->txchan++;
1703 i++; 1709 i++;
1704 if (cosa->txchan >= cosa->nchannels) 1710 if (cosa->txchan >= cosa->nchannels)
@@ -2004,7 +2010,7 @@ again:
2004static void debug_status_in(struct cosa_data *cosa, int status) 2010static void debug_status_in(struct cosa_data *cosa, int status)
2005{ 2011{
2006 char *s; 2012 char *s;
2007 switch(status & SR_CMD_FROM_SRP_MASK) { 2013 switch (status & SR_CMD_FROM_SRP_MASK) {
2008 case SR_UP_REQUEST: 2014 case SR_UP_REQUEST:
2009 s = "RX_REQ"; 2015 s = "RX_REQ";
2010 break; 2016 break;
diff --git a/drivers/net/wan/dlci.c b/drivers/net/wan/dlci.c
index 15d353f268b5..421d0715310e 100644
--- a/drivers/net/wan/dlci.c
+++ b/drivers/net/wan/dlci.c
@@ -77,7 +77,7 @@ static int dlci_header(struct sk_buff *skb, struct net_device *dev,
77 dlp = netdev_priv(dev); 77 dlp = netdev_priv(dev);
78 78
79 hdr.control = FRAD_I_UI; 79 hdr.control = FRAD_I_UI;
80 switch(type) 80 switch (type)
81 { 81 {
82 case ETH_P_IP: 82 case ETH_P_IP:
83 hdr.IP_NLPID = FRAD_P_IP; 83 hdr.IP_NLPID = FRAD_P_IP;
@@ -130,7 +130,7 @@ static void dlci_receive(struct sk_buff *skb, struct net_device *dev)
130 dev->stats.rx_errors++; 130 dev->stats.rx_errors++;
131 } 131 }
132 else 132 else
133 switch(hdr->IP_NLPID) 133 switch (hdr->IP_NLPID)
134 { 134 {
135 case FRAD_P_PADDING: 135 case FRAD_P_PADDING:
136 if (hdr->NLPID != FRAD_P_SNAP) 136 if (hdr->NLPID != FRAD_P_SNAP)
@@ -208,7 +208,7 @@ static int dlci_config(struct net_device *dev, struct dlci_conf __user *conf, in
208 208
209 if (!get) 209 if (!get)
210 { 210 {
211 if(copy_from_user(&config, conf, sizeof(struct dlci_conf))) 211 if (copy_from_user(&config, conf, sizeof(struct dlci_conf)))
212 return -EFAULT; 212 return -EFAULT;
213 if (config.flags & ~DLCI_VALID_FLAGS) 213 if (config.flags & ~DLCI_VALID_FLAGS)
214 return(-EINVAL); 214 return(-EINVAL);
@@ -222,7 +222,7 @@ static int dlci_config(struct net_device *dev, struct dlci_conf __user *conf, in
222 222
223 if (get) 223 if (get)
224 { 224 {
225 if(copy_to_user(conf, &dlp->config, sizeof(struct dlci_conf))) 225 if (copy_to_user(conf, &dlp->config, sizeof(struct dlci_conf)))
226 return -EFAULT; 226 return -EFAULT;
227 } 227 }
228 228
@@ -238,7 +238,7 @@ static int dlci_dev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
238 238
239 dlp = netdev_priv(dev); 239 dlp = netdev_priv(dev);
240 240
241 switch(cmd) 241 switch (cmd)
242 { 242 {
243 case DLCI_GET_SLAVE: 243 case DLCI_GET_SLAVE:
244 if (!*(short *)(dev->dev_addr)) 244 if (!*(short *)(dev->dev_addr))
@@ -417,7 +417,7 @@ static int dlci_ioctl(unsigned int cmd, void __user *arg)
417 if (!capable(CAP_NET_ADMIN)) 417 if (!capable(CAP_NET_ADMIN))
418 return(-EPERM); 418 return(-EPERM);
419 419
420 if(copy_from_user(&add, arg, sizeof(struct dlci_add))) 420 if (copy_from_user(&add, arg, sizeof(struct dlci_add)))
421 return -EFAULT; 421 return -EFAULT;
422 422
423 switch (cmd) 423 switch (cmd)
@@ -426,7 +426,7 @@ static int dlci_ioctl(unsigned int cmd, void __user *arg)
426 err = dlci_add(&add); 426 err = dlci_add(&add);
427 427
428 if (!err) 428 if (!err)
429 if(copy_to_user(arg, &add, sizeof(struct dlci_add))) 429 if (copy_to_user(arg, &add, sizeof(struct dlci_add)))
430 return -EFAULT; 430 return -EFAULT;
431 break; 431 break;
432 432
diff --git a/drivers/net/wan/dscc4.c b/drivers/net/wan/dscc4.c
index 07d00b4cf48a..a4859f7a7cc0 100644
--- a/drivers/net/wan/dscc4.c
+++ b/drivers/net/wan/dscc4.c
@@ -89,6 +89,7 @@
89#include <linux/pci.h> 89#include <linux/pci.h>
90#include <linux/kernel.h> 90#include <linux/kernel.h>
91#include <linux/mm.h> 91#include <linux/mm.h>
92#include <linux/slab.h>
92 93
93#include <asm/system.h> 94#include <asm/system.h>
94#include <asm/cache.h> 95#include <asm/cache.h>
@@ -1128,7 +1129,7 @@ done:
1128 init_timer(&dpriv->timer); 1129 init_timer(&dpriv->timer);
1129 dpriv->timer.expires = jiffies + 10*HZ; 1130 dpriv->timer.expires = jiffies + 10*HZ;
1130 dpriv->timer.data = (unsigned long)dev; 1131 dpriv->timer.data = (unsigned long)dev;
1131 dpriv->timer.function = &dscc4_timer; 1132 dpriv->timer.function = dscc4_timer;
1132 add_timer(&dpriv->timer); 1133 add_timer(&dpriv->timer);
1133 netif_carrier_on(dev); 1134 netif_carrier_on(dev);
1134 1135
@@ -2050,7 +2051,7 @@ static int __init dscc4_setup(char *str)
2050__setup("dscc4.setup=", dscc4_setup); 2051__setup("dscc4.setup=", dscc4_setup);
2051#endif 2052#endif
2052 2053
2053static struct pci_device_id dscc4_pci_tbl[] = { 2054static DEFINE_PCI_DEVICE_TABLE(dscc4_pci_tbl) = {
2054 { PCI_VENDOR_ID_SIEMENS, PCI_DEVICE_ID_SIEMENS_DSCC4, 2055 { PCI_VENDOR_ID_SIEMENS, PCI_DEVICE_ID_SIEMENS_DSCC4,
2055 PCI_ANY_ID, PCI_ANY_ID, }, 2056 PCI_ANY_ID, PCI_ANY_ID, },
2056 { 0,} 2057 { 0,}
diff --git a/drivers/net/wan/farsync.c b/drivers/net/wan/farsync.c
index beda387f2fc7..e087b9a6daaa 100644
--- a/drivers/net/wan/farsync.c
+++ b/drivers/net/wan/farsync.c
@@ -20,6 +20,7 @@
20#include <linux/version.h> 20#include <linux/version.h>
21#include <linux/pci.h> 21#include <linux/pci.h>
22#include <linux/sched.h> 22#include <linux/sched.h>
23#include <linux/slab.h>
23#include <linux/ioport.h> 24#include <linux/ioport.h>
24#include <linux/init.h> 25#include <linux/init.h>
25#include <linux/if.h> 26#include <linux/if.h>
@@ -528,7 +529,7 @@ static int fst_debug_mask = { FST_DEBUG };
528/* 529/*
529 * PCI ID lookup table 530 * PCI ID lookup table
530 */ 531 */
531static struct pci_device_id fst_pci_dev_id[] __devinitdata = { 532static DEFINE_PCI_DEVICE_TABLE(fst_pci_dev_id) = {
532 {PCI_VENDOR_ID_FARSITE, PCI_DEVICE_ID_FARSITE_T2P, PCI_ANY_ID, 533 {PCI_VENDOR_ID_FARSITE, PCI_DEVICE_ID_FARSITE_T2P, PCI_ANY_ID,
533 PCI_ANY_ID, 0, 0, FST_TYPE_T2P}, 534 PCI_ANY_ID, 0, 0, FST_TYPE_T2P},
534 535
@@ -1346,8 +1347,8 @@ do_bottom_half_tx(struct fst_card_info *card)
1346 1347
1347 dev = port_to_dev(port); 1348 dev = port_to_dev(port);
1348 while (!(FST_RDB(card, txDescrRing[pi][port->txpos].bits) & 1349 while (!(FST_RDB(card, txDescrRing[pi][port->txpos].bits) &
1349 DMA_OWN) 1350 DMA_OWN) &&
1350 && !(card->dmatx_in_progress)) { 1351 !(card->dmatx_in_progress)) {
1351 /* 1352 /*
1352 * There doesn't seem to be a txdone event per-se 1353 * There doesn't seem to be a txdone event per-se
1353 * We seem to have to deduce it, by checking the DMA_OWN 1354 * We seem to have to deduce it, by checking the DMA_OWN
@@ -1379,8 +1380,8 @@ do_bottom_half_tx(struct fst_card_info *card)
1379 */ 1380 */
1380 FST_WRW(card, txDescrRing[pi][port->txpos].bcnt, 1381 FST_WRW(card, txDescrRing[pi][port->txpos].bcnt,
1381 cnv_bcnt(skb->len)); 1382 cnv_bcnt(skb->len));
1382 if ((skb->len < FST_MIN_DMA_LEN) 1383 if ((skb->len < FST_MIN_DMA_LEN) ||
1383 || (card->family == FST_FAMILY_TXP)) { 1384 (card->family == FST_FAMILY_TXP)) {
1384 /* Enqueue the packet with normal io */ 1385 /* Enqueue the packet with normal io */
1385 memcpy_toio(card->mem + 1386 memcpy_toio(card->mem +
1386 BUF_OFFSET(txBuffer[pi] 1387 BUF_OFFSET(txBuffer[pi]
@@ -2030,8 +2031,8 @@ fst_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
2030 /* Sanity check the parameters. We don't support partial writes 2031 /* Sanity check the parameters. We don't support partial writes
2031 * when going over the top 2032 * when going over the top
2032 */ 2033 */
2033 if (wrthdr.size > FST_MEMSIZE || wrthdr.offset > FST_MEMSIZE 2034 if (wrthdr.size > FST_MEMSIZE || wrthdr.offset > FST_MEMSIZE ||
2034 || wrthdr.size + wrthdr.offset > FST_MEMSIZE) { 2035 wrthdr.size + wrthdr.offset > FST_MEMSIZE) {
2035 return -ENXIO; 2036 return -ENXIO;
2036 } 2037 }
2037 2038
diff --git a/drivers/net/wan/hd64570.c b/drivers/net/wan/hd64570.c
index 80114c93bae7..4dde2ea4a189 100644
--- a/drivers/net/wan/hd64570.c
+++ b/drivers/net/wan/hd64570.c
@@ -37,7 +37,6 @@
37#include <linux/module.h> 37#include <linux/module.h>
38#include <linux/netdevice.h> 38#include <linux/netdevice.h>
39#include <linux/skbuff.h> 39#include <linux/skbuff.h>
40#include <linux/slab.h>
41#include <linux/string.h> 40#include <linux/string.h>
42#include <linux/types.h> 41#include <linux/types.h>
43#include <asm/io.h> 42#include <asm/io.h>
diff --git a/drivers/net/wan/hd64572.c b/drivers/net/wan/hd64572.c
index 84f01373e11f..aad9ed45c254 100644
--- a/drivers/net/wan/hd64572.c
+++ b/drivers/net/wan/hd64572.c
@@ -37,7 +37,6 @@
37#include <linux/module.h> 37#include <linux/module.h>
38#include <linux/netdevice.h> 38#include <linux/netdevice.h>
39#include <linux/skbuff.h> 39#include <linux/skbuff.h>
40#include <linux/slab.h>
41#include <linux/string.h> 40#include <linux/string.h>
42#include <linux/types.h> 41#include <linux/types.h>
43#include <asm/io.h> 42#include <asm/io.h>
diff --git a/drivers/net/wan/hdlc.c b/drivers/net/wan/hdlc.c
index cc07236ea734..9937bbab938d 100644
--- a/drivers/net/wan/hdlc.c
+++ b/drivers/net/wan/hdlc.c
@@ -57,7 +57,7 @@ static int hdlc_rcv(struct sk_buff *skb, struct net_device *dev,
57{ 57{
58 struct hdlc_device *hdlc = dev_to_hdlc(dev); 58 struct hdlc_device *hdlc = dev_to_hdlc(dev);
59 59
60 if (dev_net(dev) != &init_net) { 60 if (!net_eq(dev_net(dev), &init_net)) {
61 kfree_skb(skb); 61 kfree_skb(skb);
62 return 0; 62 return 0;
63 } 63 }
@@ -102,7 +102,7 @@ static int hdlc_device_event(struct notifier_block *this, unsigned long event,
102 unsigned long flags; 102 unsigned long flags;
103 int on; 103 int on;
104 104
105 if (dev_net(dev) != &init_net) 105 if (!net_eq(dev_net(dev), &init_net))
106 return NOTIFY_DONE; 106 return NOTIFY_DONE;
107 107
108 if (!(dev->priv_flags & IFF_WAN_HDLC)) 108 if (!(dev->priv_flags & IFF_WAN_HDLC))
diff --git a/drivers/net/wan/hdlc_cisco.c b/drivers/net/wan/hdlc_cisco.c
index f1bff98acd1f..ee7083fbea50 100644
--- a/drivers/net/wan/hdlc_cisco.c
+++ b/drivers/net/wan/hdlc_cisco.c
@@ -20,7 +20,6 @@
20#include <linux/poll.h> 20#include <linux/poll.h>
21#include <linux/rtnetlink.h> 21#include <linux/rtnetlink.h>
22#include <linux/skbuff.h> 22#include <linux/skbuff.h>
23#include <linux/slab.h>
24 23
25#undef DEBUG_HARD_HEADER 24#undef DEBUG_HARD_HEADER
26 25
@@ -141,7 +140,7 @@ static __be16 cisco_type_trans(struct sk_buff *skb, struct net_device *dev)
141 data->address != CISCO_UNICAST) 140 data->address != CISCO_UNICAST)
142 return cpu_to_be16(ETH_P_HDLC); 141 return cpu_to_be16(ETH_P_HDLC);
143 142
144 switch(data->protocol) { 143 switch (data->protocol) {
145 case cpu_to_be16(ETH_P_IP): 144 case cpu_to_be16(ETH_P_IP):
146 case cpu_to_be16(ETH_P_IPX): 145 case cpu_to_be16(ETH_P_IPX):
147 case cpu_to_be16(ETH_P_IPV6): 146 case cpu_to_be16(ETH_P_IPV6):
@@ -190,7 +189,7 @@ static int cisco_rx(struct sk_buff *skb)
190 cisco_data = (struct cisco_packet*)(skb->data + sizeof 189 cisco_data = (struct cisco_packet*)(skb->data + sizeof
191 (struct hdlc_header)); 190 (struct hdlc_header));
192 191
193 switch(ntohl (cisco_data->type)) { 192 switch (ntohl (cisco_data->type)) {
194 case CISCO_ADDR_REQ: /* Stolen from syncppp.c :-) */ 193 case CISCO_ADDR_REQ: /* Stolen from syncppp.c :-) */
195 in_dev = dev->ip_ptr; 194 in_dev = dev->ip_ptr;
196 addr = 0; 195 addr = 0;
@@ -245,8 +244,8 @@ static int cisco_rx(struct sk_buff *skb)
245 244
246 dev_kfree_skb_any(skb); 245 dev_kfree_skb_any(skb);
247 return NET_RX_SUCCESS; 246 return NET_RX_SUCCESS;
248 } /* switch(keepalive type) */ 247 } /* switch (keepalive type) */
249 } /* switch(protocol) */ 248 } /* switch (protocol) */
250 249
251 printk(KERN_INFO "%s: Unsupported protocol %x\n", dev->name, 250 printk(KERN_INFO "%s: Unsupported protocol %x\n", dev->name,
252 ntohs(data->protocol)); 251 ntohs(data->protocol));
diff --git a/drivers/net/wan/hdlc_fr.c b/drivers/net/wan/hdlc_fr.c
index 840cff72a0f1..0e52993e2079 100644
--- a/drivers/net/wan/hdlc_fr.c
+++ b/drivers/net/wan/hdlc_fr.c
@@ -182,7 +182,7 @@ static inline pvc_device* find_pvc(hdlc_device *hdlc, u16 dlci)
182 if (pvc->dlci == dlci) 182 if (pvc->dlci == dlci)
183 return pvc; 183 return pvc;
184 if (pvc->dlci > dlci) 184 if (pvc->dlci > dlci)
185 return NULL; /* the listed is sorted */ 185 return NULL; /* the list is sorted */
186 pvc = pvc->next; 186 pvc = pvc->next;
187 } 187 }
188 188
@@ -1214,10 +1214,10 @@ static int fr_ioctl(struct net_device *dev, struct ifreq *ifr)
1214 return 0; 1214 return 0;
1215 1215
1216 case IF_PROTO_FR: 1216 case IF_PROTO_FR:
1217 if(!capable(CAP_NET_ADMIN)) 1217 if (!capable(CAP_NET_ADMIN))
1218 return -EPERM; 1218 return -EPERM;
1219 1219
1220 if(dev->flags & IFF_UP) 1220 if (dev->flags & IFF_UP)
1221 return -EBUSY; 1221 return -EBUSY;
1222 1222
1223 if (copy_from_user(&new_settings, fr_s, size)) 1223 if (copy_from_user(&new_settings, fr_s, size))
@@ -1263,7 +1263,7 @@ static int fr_ioctl(struct net_device *dev, struct ifreq *ifr)
1263 if (dev_to_hdlc(dev)->proto != &proto) /* Different proto */ 1263 if (dev_to_hdlc(dev)->proto != &proto) /* Different proto */
1264 return -EINVAL; 1264 return -EINVAL;
1265 1265
1266 if(!capable(CAP_NET_ADMIN)) 1266 if (!capable(CAP_NET_ADMIN))
1267 return -EPERM; 1267 return -EPERM;
1268 1268
1269 if (copy_from_user(&pvc, ifr->ifr_settings.ifs_ifsu.fr_pvc, 1269 if (copy_from_user(&pvc, ifr->ifr_settings.ifs_ifsu.fr_pvc,
diff --git a/drivers/net/wan/hdlc_ppp.c b/drivers/net/wan/hdlc_ppp.c
index b9b9d6b01c0b..941f053e650e 100644
--- a/drivers/net/wan/hdlc_ppp.c
+++ b/drivers/net/wan/hdlc_ppp.c
@@ -628,9 +628,15 @@ static void ppp_stop(struct net_device *dev)
628 ppp_cp_event(dev, PID_LCP, STOP, 0, 0, 0, NULL); 628 ppp_cp_event(dev, PID_LCP, STOP, 0, 0, 0, NULL);
629} 629}
630 630
631static void ppp_close(struct net_device *dev)
632{
633 ppp_tx_flush();
634}
635
631static struct hdlc_proto proto = { 636static struct hdlc_proto proto = {
632 .start = ppp_start, 637 .start = ppp_start,
633 .stop = ppp_stop, 638 .stop = ppp_stop,
639 .close = ppp_close,
634 .type_trans = ppp_type_trans, 640 .type_trans = ppp_type_trans,
635 .ioctl = ppp_ioctl, 641 .ioctl = ppp_ioctl,
636 .netif_rx = ppp_rx, 642 .netif_rx = ppp_rx,
diff --git a/drivers/net/wan/hdlc_raw.c b/drivers/net/wan/hdlc_raw.c
index 19f51fdd5522..5dc153e8a29d 100644
--- a/drivers/net/wan/hdlc_raw.c
+++ b/drivers/net/wan/hdlc_raw.c
@@ -20,7 +20,6 @@
20#include <linux/poll.h> 20#include <linux/poll.h>
21#include <linux/rtnetlink.h> 21#include <linux/rtnetlink.h>
22#include <linux/skbuff.h> 22#include <linux/skbuff.h>
23#include <linux/slab.h>
24 23
25 24
26static int raw_ioctl(struct net_device *dev, struct ifreq *ifr); 25static int raw_ioctl(struct net_device *dev, struct ifreq *ifr);
diff --git a/drivers/net/wan/hdlc_raw_eth.c b/drivers/net/wan/hdlc_raw_eth.c
index 1b30fcc24145..05c9b0b96239 100644
--- a/drivers/net/wan/hdlc_raw_eth.c
+++ b/drivers/net/wan/hdlc_raw_eth.c
@@ -11,6 +11,7 @@
11 11
12#include <linux/errno.h> 12#include <linux/errno.h>
13#include <linux/etherdevice.h> 13#include <linux/etherdevice.h>
14#include <linux/gfp.h>
14#include <linux/hdlc.h> 15#include <linux/hdlc.h>
15#include <linux/if_arp.h> 16#include <linux/if_arp.h>
16#include <linux/inetdevice.h> 17#include <linux/inetdevice.h>
@@ -21,7 +22,6 @@
21#include <linux/poll.h> 22#include <linux/poll.h>
22#include <linux/rtnetlink.h> 23#include <linux/rtnetlink.h>
23#include <linux/skbuff.h> 24#include <linux/skbuff.h>
24#include <linux/slab.h>
25 25
26static int raw_eth_ioctl(struct net_device *dev, struct ifreq *ifr); 26static int raw_eth_ioctl(struct net_device *dev, struct ifreq *ifr);
27 27
diff --git a/drivers/net/wan/hdlc_x25.c b/drivers/net/wan/hdlc_x25.c
index aa9248f8eb1a..c7adbb79f7cc 100644
--- a/drivers/net/wan/hdlc_x25.c
+++ b/drivers/net/wan/hdlc_x25.c
@@ -10,6 +10,7 @@
10 */ 10 */
11 11
12#include <linux/errno.h> 12#include <linux/errno.h>
13#include <linux/gfp.h>
13#include <linux/hdlc.h> 14#include <linux/hdlc.h>
14#include <linux/if_arp.h> 15#include <linux/if_arp.h>
15#include <linux/inetdevice.h> 16#include <linux/inetdevice.h>
@@ -21,7 +22,6 @@
21#include <linux/poll.h> 22#include <linux/poll.h>
22#include <linux/rtnetlink.h> 23#include <linux/rtnetlink.h>
23#include <linux/skbuff.h> 24#include <linux/skbuff.h>
24#include <linux/slab.h>
25#include <net/x25device.h> 25#include <net/x25device.h>
26 26
27static int x25_ioctl(struct net_device *dev, struct ifreq *ifr); 27static int x25_ioctl(struct net_device *dev, struct ifreq *ifr);
@@ -202,10 +202,10 @@ static int x25_ioctl(struct net_device *dev, struct ifreq *ifr)
202 return 0; /* return protocol only, no settable parameters */ 202 return 0; /* return protocol only, no settable parameters */
203 203
204 case IF_PROTO_X25: 204 case IF_PROTO_X25:
205 if(!capable(CAP_NET_ADMIN)) 205 if (!capable(CAP_NET_ADMIN))
206 return -EPERM; 206 return -EPERM;
207 207
208 if(dev->flags & IFF_UP) 208 if (dev->flags & IFF_UP)
209 return -EBUSY; 209 return -EBUSY;
210 210
211 result=hdlc->attach(dev, ENCODING_NRZ,PARITY_CRC16_PR1_CCITT); 211 result=hdlc->attach(dev, ENCODING_NRZ,PARITY_CRC16_PR1_CCITT);
diff --git a/drivers/net/wan/hostess_sv11.c b/drivers/net/wan/hostess_sv11.c
index 15002c3d0d95..48edc5f4dac8 100644
--- a/drivers/net/wan/hostess_sv11.c
+++ b/drivers/net/wan/hostess_sv11.c
@@ -30,6 +30,7 @@
30#include <linux/delay.h> 30#include <linux/delay.h>
31#include <linux/hdlc.h> 31#include <linux/hdlc.h>
32#include <linux/ioport.h> 32#include <linux/ioport.h>
33#include <linux/slab.h>
33#include <net/arp.h> 34#include <net/arp.h>
34 35
35#include <asm/irq.h> 36#include <asm/irq.h>
@@ -218,7 +219,7 @@ static struct z8530_dev *sv11_init(int iobase, int irq)
218 /* We want a fast IRQ for this device. Actually we'd like an even faster 219 /* We want a fast IRQ for this device. Actually we'd like an even faster
219 IRQ ;) - This is one driver RtLinux is made for */ 220 IRQ ;) - This is one driver RtLinux is made for */
220 221
221 if (request_irq(irq, &z8530_interrupt, IRQF_DISABLED, 222 if (request_irq(irq, z8530_interrupt, IRQF_DISABLED,
222 "Hostess SV11", sv) < 0) { 223 "Hostess SV11", sv) < 0) {
223 printk(KERN_WARNING "hostess: IRQ %d already in use.\n", irq); 224 printk(KERN_WARNING "hostess: IRQ %d already in use.\n", irq);
224 goto err_irq; 225 goto err_irq;
diff --git a/drivers/net/wan/ixp4xx_hss.c b/drivers/net/wan/ixp4xx_hss.c
index c705046d8615..0c2cdde686a0 100644
--- a/drivers/net/wan/ixp4xx_hss.c
+++ b/drivers/net/wan/ixp4xx_hss.c
@@ -18,6 +18,7 @@
18#include <linux/kernel.h> 18#include <linux/kernel.h>
19#include <linux/platform_device.h> 19#include <linux/platform_device.h>
20#include <linux/poll.h> 20#include <linux/poll.h>
21#include <linux/slab.h>
21#include <mach/npe.h> 22#include <mach/npe.h>
22#include <mach/qmgr.h> 23#include <mach/qmgr.h>
23 24
diff --git a/drivers/net/wan/lapbether.c b/drivers/net/wan/lapbether.c
index d1e3c673e9b2..98e2f99903d7 100644
--- a/drivers/net/wan/lapbether.c
+++ b/drivers/net/wan/lapbether.c
@@ -24,6 +24,7 @@
24#include <linux/types.h> 24#include <linux/types.h>
25#include <linux/socket.h> 25#include <linux/socket.h>
26#include <linux/in.h> 26#include <linux/in.h>
27#include <linux/slab.h>
27#include <linux/kernel.h> 28#include <linux/kernel.h>
28#include <linux/string.h> 29#include <linux/string.h>
29#include <linux/net.h> 30#include <linux/net.h>
diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
index 7ea71b33d2e9..b27850377121 100644
--- a/drivers/net/wan/lmc/lmc_main.c
+++ b/drivers/net/wan/lmc/lmc_main.c
@@ -77,7 +77,7 @@
77 77
78static int LMC_PKT_BUF_SZ = 1542; 78static int LMC_PKT_BUF_SZ = 1542;
79 79
80static struct pci_device_id lmc_pci_tbl[] = { 80static DEFINE_PCI_DEVICE_TABLE(lmc_pci_tbl) = {
81 { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST, 81 { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST,
82 PCI_VENDOR_ID_LMC, PCI_ANY_ID }, 82 PCI_VENDOR_ID_LMC, PCI_ANY_ID },
83 { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST, 83 { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST,
@@ -927,7 +927,7 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
927 sc->lmc_media = &lmc_t1_media; 927 sc->lmc_media = &lmc_t1_media;
928 break; 928 break;
929 default: 929 default:
930 printk(KERN_WARNING "%s: LMC UNKOWN CARD!\n", dev->name); 930 printk(KERN_WARNING "%s: LMC UNKNOWN CARD!\n", dev->name);
931 break; 931 break;
932 } 932 }
933 933
@@ -1028,7 +1028,7 @@ static int lmc_open(struct net_device *dev)
1028 lmc_softreset (sc); 1028 lmc_softreset (sc);
1029 1029
1030 /* Since we have to use PCI bus, this should work on x86,alpha,ppc */ 1030 /* Since we have to use PCI bus, this should work on x86,alpha,ppc */
1031 if (request_irq (dev->irq, &lmc_interrupt, IRQF_SHARED, dev->name, dev)){ 1031 if (request_irq (dev->irq, lmc_interrupt, IRQF_SHARED, dev->name, dev)){
1032 printk(KERN_WARNING "%s: could not get irq: %d\n", dev->name, dev->irq); 1032 printk(KERN_WARNING "%s: could not get irq: %d\n", dev->name, dev->irq);
1033 lmc_trace(dev, "lmc_open irq failed out"); 1033 lmc_trace(dev, "lmc_open irq failed out");
1034 return -EAGAIN; 1034 return -EAGAIN;
diff --git a/drivers/net/wan/lmc/lmc_media.c b/drivers/net/wan/lmc/lmc_media.c
index f327674fc93a..5920c996fcdf 100644
--- a/drivers/net/wan/lmc/lmc_media.c
+++ b/drivers/net/wan/lmc/lmc_media.c
@@ -6,7 +6,6 @@
6#include <linux/ptrace.h> 6#include <linux/ptrace.h>
7#include <linux/errno.h> 7#include <linux/errno.h>
8#include <linux/ioport.h> 8#include <linux/ioport.h>
9#include <linux/slab.h>
10#include <linux/interrupt.h> 9#include <linux/interrupt.h>
11#include <linux/in.h> 10#include <linux/in.h>
12#include <linux/if_arp.h> 11#include <linux/if_arp.h>
diff --git a/drivers/net/wan/lmc/lmc_proto.c b/drivers/net/wan/lmc/lmc_proto.c
index 044a48175c42..f600075e84a2 100644
--- a/drivers/net/wan/lmc/lmc_proto.c
+++ b/drivers/net/wan/lmc/lmc_proto.c
@@ -25,7 +25,6 @@
25#include <linux/ptrace.h> 25#include <linux/ptrace.h>
26#include <linux/errno.h> 26#include <linux/errno.h>
27#include <linux/ioport.h> 27#include <linux/ioport.h>
28#include <linux/slab.h>
29#include <linux/interrupt.h> 28#include <linux/interrupt.h>
30#include <linux/in.h> 29#include <linux/in.h>
31#include <linux/if_arp.h> 30#include <linux/if_arp.h>
diff --git a/drivers/net/wan/n2.c b/drivers/net/wan/n2.c
index 58c66819f39b..5394b51bdb2f 100644
--- a/drivers/net/wan/n2.c
+++ b/drivers/net/wan/n2.c
@@ -376,7 +376,7 @@ static int __init n2_run(unsigned long io, unsigned long irq,
376 } 376 }
377 card->io = io; 377 card->io = io;
378 378
379 if (request_irq(irq, &sca_intr, 0, devname, card)) { 379 if (request_irq(irq, sca_intr, 0, devname, card)) {
380 printk(KERN_ERR "n2: could not allocate IRQ\n"); 380 printk(KERN_ERR "n2: could not allocate IRQ\n");
381 n2_destroy_card(card); 381 n2_destroy_card(card);
382 return(-EBUSY); 382 return(-EBUSY);
diff --git a/drivers/net/wan/pc300_drv.c b/drivers/net/wan/pc300_drv.c
index 79dabc557bd3..3f744c643094 100644
--- a/drivers/net/wan/pc300_drv.c
+++ b/drivers/net/wan/pc300_drv.c
@@ -228,6 +228,7 @@ static char rcsid[] =
228#include <linux/etherdevice.h> 228#include <linux/etherdevice.h>
229#include <linux/spinlock.h> 229#include <linux/spinlock.h>
230#include <linux/if.h> 230#include <linux/if.h>
231#include <linux/slab.h>
231#include <net/arp.h> 232#include <net/arp.h>
232 233
233#include <asm/io.h> 234#include <asm/io.h>
@@ -251,7 +252,7 @@ static char rcsid[] =
251#undef PC300_DEBUG_RX 252#undef PC300_DEBUG_RX
252#undef PC300_DEBUG_OTHER 253#undef PC300_DEBUG_OTHER
253 254
254static struct pci_device_id cpc_pci_dev_id[] __devinitdata = { 255static DEFINE_PCI_DEVICE_TABLE(cpc_pci_dev_id) = {
255 /* PC300/RSV or PC300/X21, 2 chan */ 256 /* PC300/RSV or PC300/X21, 2 chan */
256 {0x120e, 0x300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0x300}, 257 {0x120e, 0x300, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0x300},
257 /* PC300/RSV or PC300/X21, 1 chan */ 258 /* PC300/RSV or PC300/X21, 1 chan */
@@ -514,8 +515,8 @@ static int dma_buf_read(pc300_t * card, int ch, struct sk_buff *skb)
514 RX_BD_ADDR(ch, chan->rx_first_bd)); 515 RX_BD_ADDR(ch, chan->rx_first_bd));
515 while ((status = cpc_readb(&ptdescr->status)) & DST_OSB) { 516 while ((status = cpc_readb(&ptdescr->status)) & DST_OSB) {
516 nchar = cpc_readw(&ptdescr->len); 517 nchar = cpc_readw(&ptdescr->len);
517 if ((status & (DST_OVR | DST_CRC | DST_RBIT | DST_SHRT | DST_ABT)) 518 if ((status & (DST_OVR | DST_CRC | DST_RBIT | DST_SHRT | DST_ABT)) ||
518 || (nchar > BD_DEF_LEN)) { 519 (nchar > BD_DEF_LEN)) {
519 520
520 if (nchar > BD_DEF_LEN) 521 if (nchar > BD_DEF_LEN)
521 status |= DST_RBIT; 522 status |= DST_RBIT;
@@ -1428,8 +1429,7 @@ static void falc_update_stats(pc300_t * card, int ch)
1428 1429
1429 if (((conf->media == IF_IFACE_T1) && 1430 if (((conf->media == IF_IFACE_T1) &&
1430 (cpc_readb(falcbase + F_REG(FRS1, ch)) & FRS1_LLBAD) && 1431 (cpc_readb(falcbase + F_REG(FRS1, ch)) & FRS1_LLBAD) &&
1431 (!(cpc_readb(falcbase + F_REG(FRS1, ch)) & FRS1_PDEN))) 1432 (!(cpc_readb(falcbase + F_REG(FRS1, ch)) & FRS1_PDEN))) ||
1432 ||
1433 ((conf->media == IF_IFACE_E1) && 1433 ((conf->media == IF_IFACE_E1) &&
1434 (cpc_readb(falcbase + F_REG(RSP, ch)) & RSP_LLBAD))) { 1434 (cpc_readb(falcbase + F_REG(RSP, ch)) & RSP_LLBAD))) {
1435 pfalc->prbs = 2; 1435 pfalc->prbs = 2;
@@ -2285,8 +2285,8 @@ static void falc_e1_intr(pc300_t * card, int ch)
2285 if (gis & GIS_ISR1) { 2285 if (gis & GIS_ISR1) {
2286 isr1 = cpc_readb(falcbase + F_REG(FISR1, ch)); 2286 isr1 = cpc_readb(falcbase + F_REG(FISR1, ch));
2287 if (isr1 & FISR1_XMB) { 2287 if (isr1 & FISR1_XMB) {
2288 if ((pfalc->xmb_cause & 2) 2288 if ((pfalc->xmb_cause & 2) &&
2289 && pfalc->multiframe_mode) { 2289 pfalc->multiframe_mode) {
2290 if (cpc_readb (falcbase + F_REG(FRS0, ch)) & 2290 if (cpc_readb (falcbase + F_REG(FRS0, ch)) &
2291 (FRS0_LOS | FRS0_AIS | FRS0_LFA)) { 2291 (FRS0_LOS | FRS0_AIS | FRS0_LFA)) {
2292 cpc_writeb(falcbase + F_REG(XSP, ch), 2292 cpc_writeb(falcbase + F_REG(XSP, ch),
@@ -2639,9 +2639,9 @@ static int cpc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
2639 !(cpc_readb (scabase + M_REG(CTL, ch)) & CTL_DTR); 2639 !(cpc_readb (scabase + M_REG(CTL, ch)) & CTL_DTR);
2640 /* There is no DSR in HD64572 */ 2640 /* There is no DSR in HD64572 */
2641 } 2641 }
2642 if (!arg 2642 if (!arg ||
2643 || copy_to_user(arg, &pc300status, sizeof(pc300status_t))) 2643 copy_to_user(arg, &pc300status, sizeof(pc300status_t)))
2644 return -EINVAL; 2644 return -EINVAL;
2645 return 0; 2645 return 0;
2646 } 2646 }
2647 2647
diff --git a/drivers/net/wan/pc300too.c b/drivers/net/wan/pc300too.c
index 60ece54bdd94..c7ab3becd261 100644
--- a/drivers/net/wan/pc300too.c
+++ b/drivers/net/wan/pc300too.c
@@ -481,7 +481,7 @@ static int __devinit pc300_pci_init_one(struct pci_dev *pdev,
481 481
482 482
483 483
484static struct pci_device_id pc300_pci_tbl[] __devinitdata = { 484static DEFINE_PCI_DEVICE_TABLE(pc300_pci_tbl) = {
485 { PCI_VENDOR_ID_CYCLADES, PCI_DEVICE_ID_PC300_RX_1, PCI_ANY_ID, 485 { PCI_VENDOR_ID_CYCLADES, PCI_DEVICE_ID_PC300_RX_1, PCI_ANY_ID,
486 PCI_ANY_ID, 0, 0, 0 }, 486 PCI_ANY_ID, 0, 0, 0 },
487 { PCI_VENDOR_ID_CYCLADES, PCI_DEVICE_ID_PC300_RX_2, PCI_ANY_ID, 487 { PCI_VENDOR_ID_CYCLADES, PCI_DEVICE_ID_PC300_RX_2, PCI_ANY_ID,
diff --git a/drivers/net/wan/pci200syn.c b/drivers/net/wan/pci200syn.c
index f1340faaf022..e2cff64a446a 100644
--- a/drivers/net/wan/pci200syn.c
+++ b/drivers/net/wan/pci200syn.c
@@ -417,7 +417,7 @@ static int __devinit pci200_pci_init_one(struct pci_dev *pdev,
417 417
418 418
419 419
420static struct pci_device_id pci200_pci_tbl[] __devinitdata = { 420static DEFINE_PCI_DEVICE_TABLE(pci200_pci_tbl) = {
421 { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, PCI_VENDOR_ID_PLX, 421 { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, PCI_VENDOR_ID_PLX,
422 PCI_DEVICE_ID_PLX_PCI200SYN, 0, 0, 0 }, 422 PCI_DEVICE_ID_PLX_PCI200SYN, 0, 0, 0 },
423 { 0, } 423 { 0, }
diff --git a/drivers/net/wan/sbni.c b/drivers/net/wan/sbni.c
index 1cc24a45f003..cff13a9597cd 100644
--- a/drivers/net/wan/sbni.c
+++ b/drivers/net/wan/sbni.c
@@ -43,7 +43,6 @@
43#include <linux/fcntl.h> 43#include <linux/fcntl.h>
44#include <linux/ioport.h> 44#include <linux/ioport.h>
45#include <linux/interrupt.h> 45#include <linux/interrupt.h>
46#include <linux/slab.h>
47#include <linux/string.h> 46#include <linux/string.h>
48#include <linux/errno.h> 47#include <linux/errno.h>
49#include <linux/netdevice.h> 48#include <linux/netdevice.h>
@@ -195,9 +194,9 @@ static unsigned int netcard_portlist[ ] __initdata = {
195static inline int __init 194static inline int __init
196sbni_isa_probe( struct net_device *dev ) 195sbni_isa_probe( struct net_device *dev )
197{ 196{
198 if( dev->base_addr > 0x1ff 197 if( dev->base_addr > 0x1ff &&
199 && request_region( dev->base_addr, SBNI_IO_EXTENT, dev->name ) 198 request_region( dev->base_addr, SBNI_IO_EXTENT, dev->name ) &&
200 && sbni_probe1( dev, dev->base_addr, dev->irq ) ) 199 sbni_probe1( dev, dev->base_addr, dev->irq ) )
201 200
202 return 0; 201 return 0;
203 else { 202 else {
@@ -286,8 +285,8 @@ static int __init sbni_init(struct net_device *dev)
286 285
287 for( i = 0; netcard_portlist[ i ]; ++i ) { 286 for( i = 0; netcard_portlist[ i ]; ++i ) {
288 int ioaddr = netcard_portlist[ i ]; 287 int ioaddr = netcard_portlist[ i ];
289 if( request_region( ioaddr, SBNI_IO_EXTENT, dev->name ) 288 if( request_region( ioaddr, SBNI_IO_EXTENT, dev->name ) &&
290 && sbni_probe1( dev, ioaddr, 0 )) 289 sbni_probe1( dev, ioaddr, 0 ))
291 return 0; 290 return 0;
292 } 291 }
293 292
@@ -306,9 +305,9 @@ sbni_pci_probe( struct net_device *dev )
306 unsigned long pci_ioaddr; 305 unsigned long pci_ioaddr;
307 u16 subsys; 306 u16 subsys;
308 307
309 if( pdev->vendor != SBNI_PCI_VENDOR 308 if( pdev->vendor != SBNI_PCI_VENDOR &&
310 && pdev->device != SBNI_PCI_DEVICE ) 309 pdev->device != SBNI_PCI_DEVICE )
311 continue; 310 continue;
312 311
313 pci_ioaddr = pci_resource_start( pdev, 0 ); 312 pci_ioaddr = pci_resource_start( pdev, 0 );
314 pci_irq_line = pdev->irq; 313 pci_irq_line = pdev->irq;
@@ -977,8 +976,8 @@ check_fhdr( u32 ioaddr, u32 *framelen, u32 *frameno, u32 *ack,
977 *ack = *framelen & FRAME_ACK_MASK; 976 *ack = *framelen & FRAME_ACK_MASK;
978 *is_first = (*framelen & FRAME_FIRST) != 0; 977 *is_first = (*framelen & FRAME_FIRST) != 0;
979 978
980 if( (*framelen &= FRAME_LEN_MASK) < 6 979 if( (*framelen &= FRAME_LEN_MASK) < 6 ||
981 || *framelen > SBNI_MAX_FRAME - 3 ) 980 *framelen > SBNI_MAX_FRAME - 3 )
982 return 0; 981 return 0;
983 982
984 value = inb( ioaddr + DAT ); 983 value = inb( ioaddr + DAT );
@@ -1173,10 +1172,10 @@ sbni_open( struct net_device *dev )
1173 if( dev->base_addr < 0x400 ) { /* ISA only */ 1172 if( dev->base_addr < 0x400 ) { /* ISA only */
1174 struct net_device **p = sbni_cards; 1173 struct net_device **p = sbni_cards;
1175 for( ; *p && p < sbni_cards + SBNI_MAX_NUM_CARDS; ++p ) 1174 for( ; *p && p < sbni_cards + SBNI_MAX_NUM_CARDS; ++p )
1176 if( (*p)->irq == dev->irq 1175 if( (*p)->irq == dev->irq &&
1177 && ((*p)->base_addr == dev->base_addr + 4 1176 ((*p)->base_addr == dev->base_addr + 4 ||
1178 || (*p)->base_addr == dev->base_addr - 4) 1177 (*p)->base_addr == dev->base_addr - 4) &&
1179 && (*p)->flags & IFF_UP ) { 1178 (*p)->flags & IFF_UP ) {
1180 1179
1181 ((struct net_local *) (netdev_priv(*p))) 1180 ((struct net_local *) (netdev_priv(*p)))
1182 ->second = dev; 1181 ->second = dev;
diff --git a/drivers/net/wan/sdla.c b/drivers/net/wan/sdla.c
index 2b15a7e40d5b..31c41af2246d 100644
--- a/drivers/net/wan/sdla.c
+++ b/drivers/net/wan/sdla.c
@@ -1457,7 +1457,7 @@ got_type:
1457 } 1457 }
1458 1458
1459 err = -EAGAIN; 1459 err = -EAGAIN;
1460 if (request_irq(dev->irq, &sdla_isr, 0, dev->name, dev)) 1460 if (request_irq(dev->irq, sdla_isr, 0, dev->name, dev))
1461 goto fail; 1461 goto fail;
1462 1462
1463 if (flp->type == SDLA_S507) { 1463 if (flp->type == SDLA_S507) {
diff --git a/drivers/net/wan/sealevel.c b/drivers/net/wan/sealevel.c
index 0c525e24b247..e91457d6023e 100644
--- a/drivers/net/wan/sealevel.c
+++ b/drivers/net/wan/sealevel.c
@@ -23,6 +23,7 @@
23#include <linux/hdlc.h> 23#include <linux/hdlc.h>
24#include <linux/ioport.h> 24#include <linux/ioport.h>
25#include <linux/init.h> 25#include <linux/init.h>
26#include <linux/slab.h>
26#include <net/arp.h> 27#include <net/arp.h>
27 28
28#include <asm/irq.h> 29#include <asm/irq.h>
@@ -84,8 +85,7 @@ static int sealevel_open(struct net_device *d)
84 * Link layer up. 85 * Link layer up.
85 */ 86 */
86 87
87 switch (unit) 88 switch (unit) {
88 {
89 case 0: 89 case 0:
90 err = z8530_sync_dma_open(d, slvl->chan); 90 err = z8530_sync_dma_open(d, slvl->chan);
91 break; 91 break;
@@ -133,8 +133,7 @@ static int sealevel_close(struct net_device *d)
133 hdlc_close(d); 133 hdlc_close(d);
134 netif_stop_queue(d); 134 netif_stop_queue(d);
135 135
136 switch (unit) 136 switch (unit) {
137 {
138 case 0: 137 case 0:
139 z8530_sync_dma_close(d, slvl->chan); 138 z8530_sync_dma_close(d, slvl->chan);
140 break; 139 break;
@@ -266,7 +265,7 @@ static __init struct slvl_board *slvl_init(int iobase, int irq,
266 /* We want a fast IRQ for this device. Actually we'd like an even faster 265 /* We want a fast IRQ for this device. Actually we'd like an even faster
267 IRQ ;) - This is one driver RtLinux is made for */ 266 IRQ ;) - This is one driver RtLinux is made for */
268 267
269 if (request_irq(irq, &z8530_interrupt, IRQF_DISABLED, 268 if (request_irq(irq, z8530_interrupt, IRQF_DISABLED,
270 "SeaLevel", dev) < 0) { 269 "SeaLevel", dev) < 0) {
271 printk(KERN_WARNING "sealevel: IRQ %d already in use.\n", irq); 270 printk(KERN_WARNING "sealevel: IRQ %d already in use.\n", irq);
272 goto err_request_irq; 271 goto err_request_irq;
@@ -342,8 +341,7 @@ static void __exit slvl_shutdown(struct slvl_board *b)
342 341
343 z8530_shutdown(&b->board); 342 z8530_shutdown(&b->board);
344 343
345 for (u = 0; u < 2; u++) 344 for (u = 0; u < 2; u++) {
346 {
347 struct net_device *d = b->dev[u].chan->netdevice; 345 struct net_device *d = b->dev[u].chan->netdevice;
348 unregister_hdlc_device(d); 346 unregister_hdlc_device(d);
349 free_netdev(d); 347 free_netdev(d);
@@ -391,7 +389,7 @@ static int __init slvl_init_module(void)
391 389
392static void __exit slvl_cleanup_module(void) 390static void __exit slvl_cleanup_module(void)
393{ 391{
394 if(slvl_unit) 392 if (slvl_unit)
395 slvl_shutdown(slvl_unit); 393 slvl_shutdown(slvl_unit);
396} 394}
397 395
diff --git a/drivers/net/wan/wanxl.c b/drivers/net/wan/wanxl.c
index daee8a0624ee..541c700dceef 100644
--- a/drivers/net/wan/wanxl.c
+++ b/drivers/net/wan/wanxl.c
@@ -814,7 +814,7 @@ static int __devinit wanxl_pci_init_one(struct pci_dev *pdev,
814 return 0; 814 return 0;
815} 815}
816 816
817static struct pci_device_id wanxl_pci_tbl[] __devinitdata = { 817static DEFINE_PCI_DEVICE_TABLE(wanxl_pci_tbl) = {
818 { PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_SBE_WANXL100, PCI_ANY_ID, 818 { PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_SBE_WANXL100, PCI_ANY_ID,
819 PCI_ANY_ID, 0, 0, 0 }, 819 PCI_ANY_ID, 0, 0, 0 },
820 { PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_SBE_WANXL200, PCI_ANY_ID, 820 { PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_SBE_WANXL200, PCI_ANY_ID,
diff --git a/drivers/net/wan/x25_asy.c b/drivers/net/wan/x25_asy.c
index 27945049c9e1..80d5c5834a0b 100644
--- a/drivers/net/wan/x25_asy.c
+++ b/drivers/net/wan/x25_asy.c
@@ -33,6 +33,8 @@
33#include <linux/lapb.h> 33#include <linux/lapb.h>
34#include <linux/init.h> 34#include <linux/init.h>
35#include <linux/rtnetlink.h> 35#include <linux/rtnetlink.h>
36#include <linux/compat.h>
37#include <linux/slab.h>
36#include "x25_asy.h" 38#include "x25_asy.h"
37 39
38#include <net/x25device.h> 40#include <net/x25device.h>
@@ -656,8 +658,8 @@ static void x25_asy_unesc(struct x25_asy *sl, unsigned char s)
656 658
657 switch (s) { 659 switch (s) {
658 case X25_END: 660 case X25_END:
659 if (!test_and_clear_bit(SLF_ERROR, &sl->flags) 661 if (!test_and_clear_bit(SLF_ERROR, &sl->flags) &&
660 && sl->rcount > 2) 662 sl->rcount > 2)
661 x25_asy_bump(sl); 663 x25_asy_bump(sl);
662 clear_bit(SLF_ESCAPE, &sl->flags); 664 clear_bit(SLF_ESCAPE, &sl->flags);
663 sl->rcount = 0; 665 sl->rcount = 0;
@@ -705,6 +707,21 @@ static int x25_asy_ioctl(struct tty_struct *tty, struct file *file,
705 } 707 }
706} 708}
707 709
710#ifdef CONFIG_COMPAT
711static long x25_asy_compat_ioctl(struct tty_struct *tty, struct file *file,
712 unsigned int cmd, unsigned long arg)
713{
714 switch (cmd) {
715 case SIOCGIFNAME:
716 case SIOCSIFHWADDR:
717 return x25_asy_ioctl(tty, file, cmd,
718 (unsigned long)compat_ptr(arg));
719 }
720
721 return -ENOIOCTLCMD;
722}
723#endif
724
708static int x25_asy_open_dev(struct net_device *dev) 725static int x25_asy_open_dev(struct net_device *dev)
709{ 726{
710 struct x25_asy *sl = netdev_priv(dev); 727 struct x25_asy *sl = netdev_priv(dev);
@@ -754,6 +771,9 @@ static struct tty_ldisc_ops x25_ldisc = {
754 .open = x25_asy_open_tty, 771 .open = x25_asy_open_tty,
755 .close = x25_asy_close_tty, 772 .close = x25_asy_close_tty,
756 .ioctl = x25_asy_ioctl, 773 .ioctl = x25_asy_ioctl,
774#ifdef CONFIG_COMPAT
775 .compat_ioctl = x25_asy_compat_ioctl,
776#endif
757 .receive_buf = x25_asy_receive_buf, 777 .receive_buf = x25_asy_receive_buf,
758 .write_wakeup = x25_asy_write_wakeup, 778 .write_wakeup = x25_asy_write_wakeup,
759}; 779};
diff --git a/drivers/net/wan/z85230.c b/drivers/net/wan/z85230.c
index 0be7ec7299db..fbf5e843d48c 100644
--- a/drivers/net/wan/z85230.c
+++ b/drivers/net/wan/z85230.c
@@ -47,6 +47,7 @@
47#include <linux/hdlc.h> 47#include <linux/hdlc.h>
48#include <linux/ioport.h> 48#include <linux/ioport.h>
49#include <linux/init.h> 49#include <linux/init.h>
50#include <linux/gfp.h>
50#include <asm/dma.h> 51#include <asm/dma.h>
51#include <asm/io.h> 52#include <asm/io.h>
52#define RT_LOCK 53#define RT_LOCK