summaryrefslogtreecommitdiffstats
path: root/net/wanrouter
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1998-09-19 19:15:08 +0000
committerRalf Baechle <ralf@linux-mips.org>1998-09-19 19:15:08 +0000
commit03ba4131783cc9e872f8bb26a03f15bc11f27564 (patch)
tree88db8dba75ae06ba3bad08e42c5e52efc162535c /net/wanrouter
parent257730f99381dd26e10b832fce4c94cae7ac1176 (diff)
- Merge with Linux 2.1.121.
- Bugfixes.
Diffstat (limited to 'net/wanrouter')
-rw-r--r--net/wanrouter/wanmain.c15
-rw-r--r--net/wanrouter/wanproc.c11
2 files changed, 16 insertions, 10 deletions
diff --git a/net/wanrouter/wanmain.c b/net/wanrouter/wanmain.c
index fabe85161..5dda55a35 100644
--- a/net/wanrouter/wanmain.c
+++ b/net/wanrouter/wanmain.c
@@ -5,7 +5,7 @@
* the following common services for the WAN Link Drivers:
* o WAN device managenment (registering, unregistering)
* o Network interface management
-* o Physical connection management (dial-up, incoming calls)
+* o Physical connection management (dial-up, incomming calls)
* o Logical connection management (switched virtual circuits)
* o Protocol encapsulation/decapsulation
*
@@ -25,7 +25,6 @@
* Oct 15, 1997 Farhan Thawar changed wan_encapsulate to add a pad byte of 0
* Apr 20, 1998 Alan Cox Fixed 2.1 symbols
* May 17, 1998 K. Baranowski Fixed SNAP encapsulation in wan_encapsulate
-* Aug 15, 1998 Arnaldo C. Melo Fixed device_setup return value
*****************************************************************************/
#include <linux/stddef.h> /* offsetof(), etc. */
@@ -373,8 +372,9 @@ int wanrouter_ioctl(struct inode* inode, struct file* file,
struct proc_dir_entry* dent;
wan_device_t* wandev;
- if (!capable(CAP_NET_ADMIN))
+ if (!capable(CAP_NET_ADMIN)){
return -EPERM;
+ }
if ((cmd >> 8) != ROUTER_IOCTL)
return -EINVAL;
@@ -443,7 +443,7 @@ static int device_setup (wan_device_t* wandev, wandev_conf_t* u_conf)
if (wandev->setup == NULL) /* Nothing to do ? */
return 0;
-
+
conf = kmalloc(sizeof(wandev_conf_t), GFP_KERNEL);
if (conf == NULL)
return -ENOBUFS;
@@ -459,15 +459,17 @@ static int device_setup (wan_device_t* wandev, wandev_conf_t* u_conf)
if (conf->data_size && conf->data)
{
- if(conf->data_size > 1024 || conf->data_size < 0)
+ if(conf->data_size > 64000 || conf->data_size < 0){
goto bail;
+ }
data = kmalloc(conf->data_size, GFP_KERNEL);
if (data)
{
if(!copy_from_user(data, conf->data, conf->data_size))
{
conf->data=data;
- err = wandev->setup(wandev,conf);
+ wandev->setup(wandev,conf);
+ err = 0;
}
else
err = -ENOBUFS;
@@ -681,6 +683,7 @@ static int delete_interface (wan_device_t* wandev, char* name, int force)
--wandev->ndev;
sti(); /****** critical section end ******/
+ printk("Unregistering '%s'\n", dev->name);
unregister_netdev(dev);
kfree(dev);
return 0;
diff --git a/net/wanrouter/wanproc.c b/net/wanrouter/wanproc.c
index 088487077..f92f87e1f 100644
--- a/net/wanrouter/wanproc.c
+++ b/net/wanrouter/wanproc.c
@@ -29,6 +29,7 @@
#include <asm/segment.h> /* kernel <-> user copy */
#include <asm/byteorder.h> /* htons(), etc. */
#include <asm/uaccess.h> /* copy_to_user */
+#include <asm/io.h>
#include <linux/wanrouter.h> /* WAN router API definitions */
@@ -102,6 +103,7 @@ static struct file_operations router_fops =
NULL, /* ioctl */
NULL, /* mmap */
NULL, /* no special open code */
+ NULL, /* flush */
NULL, /* no special release code */
NULL /* can't fsync */
};
@@ -141,6 +143,7 @@ static struct file_operations wandev_fops =
wanrouter_ioctl, /* ioctl */
NULL, /* mmap */
NULL, /* no special open code */
+ NULL, /* flush */
NULL, /* no special release code */
NULL /* can't fsync */
};
@@ -241,7 +244,7 @@ static struct proc_dir_entry proc_router_stat =
/* Strings */
static char conf_hdr[] =
- "Device name | port |IRQ|DMA|mem.addr|mem.size|"
+ "Device name | port |IRQ|DMA| mem.addr |mem.size|"
"option1|option2|option3|option4\n";
static char stat_hdr[] =
@@ -384,16 +387,16 @@ static int config_get_info(char* buf, char** start, off_t offs, int len,
wan_device_t* wandev;
strcpy(buf, conf_hdr);
for (wandev = router_devlist;
- wandev && (cnt < (PROC_BUFSZ - 80));
+ wandev && (cnt < (PROC_BUFSZ - 120));
wandev = wandev->next)
{
if (wandev->state) cnt += sprintf(&buf[cnt],
- "%-15s|0x%-4X|%3u|%3u|0x%-6lX|0x%-6X|%7u|%7u|%7u|%7u\n",
+ "%-15s|0x%-4X|%3u|%3u| 0x%-8lX |0x%-6X|%7u|%7u|%7u|%7u\n",
wandev->name,
wandev->ioport,
wandev->irq,
wandev->dma,
- wandev->maddr,
+ virt_to_phys(wandev->maddr),
wandev->msize,
wandev->hw_opt[0],
wandev->hw_opt[1],