diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1998-03-17 22:05:47 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1998-03-17 22:05:47 +0000 |
commit | 27cfca1ec98e91261b1a5355d10a8996464b63af (patch) | |
tree | 8e895a53e372fa682b4c0a585b9377d67ed70d0e /drivers/net/sunlance.c | |
parent | 6a76fb7214c477ccf6582bd79c5b4ccc4f9c41b1 (diff) |
Look Ma' what I found on my harddisk ...
o New faster syscalls for 2.1.x, too
o Upgrade to 2.1.89.
Don't try to run this. It's flaky as hell. But feel free to debug ...
Diffstat (limited to 'drivers/net/sunlance.c')
-rw-r--r-- | drivers/net/sunlance.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/drivers/net/sunlance.c b/drivers/net/sunlance.c index 52a3cad23..093f7a181 100644 --- a/drivers/net/sunlance.c +++ b/drivers/net/sunlance.c @@ -1,4 +1,4 @@ -/* $Id: sunlance.c,v 1.68 1997/08/15 06:44:36 davem Exp $ +/* $Id: sunlance.c,v 1.69 1998/01/09 16:42:52 jj Exp $ * lance.c: Linux/Sparc/Lance driver * * Written 1995, 1996 by Miguel de Icaza @@ -53,12 +53,15 @@ * * 1.10: * 1/26/97: Modularize driver. (ecd@skynet.be) + * + * 1.11: + * 12/27/97: Added sun4d support. (jj@sunsite.mff.cuni.cz) */ #undef DEBUG_DRIVER static char *version = - "sunlance.c:v1.10 26/Jan/97 Miguel de Icaza (miguel@nuclecu.unam.mx)\n"; + "sunlance.c:v1.11 27/Dec/97 Miguel de Icaza (miguel@nuclecu.unam.mx)\n"; static char *lancestr = "LANCE"; static char *lancedma = "LANCE DMA"; @@ -679,14 +682,25 @@ static int lance_open (struct device *dev) printk ("Lance: Can't get irq %d\n", dev->irq); return -EAGAIN; } + } +#else + if (sparc_cpu_model == sun4d) { + struct devid_cookie dcookie; - } else -#endif - if (request_irq (dev->irq, &lance_interrupt, SA_SHIRQ, + dcookie.real_dev_id = dev; + dcookie.bus_cookie = (void *)dev->base_addr; + if(request_irq(dev->irq, &lance_interrupt, + (SA_SHIRQ | SA_DCOOKIE), + lancestr, &dcookie)) { + printk ("Lance: Can't get irq %d\n", dev->irq); + return -EAGAIN; + } + } else if (request_irq (dev->irq, &lance_interrupt, SA_SHIRQ, lancestr, (void *) dev)) { printk ("Lance: Can't get irq %d\n", dev->irq); return -EAGAIN; } +#endif /* Stop the Lance */ ll->rap = LE_CSR0; @@ -856,7 +870,7 @@ static int lance_start_xmit (struct sk_buff *skb, struct device *dev) /* Kick the lance: transmit now */ ll->rdp = LE_C0_INEA | LE_C0_TDMD; dev->trans_start = jiffies; - dev_kfree_skb (skb, FREE_WRITE); + dev_kfree_skb (skb); if (TX_BUFFS_AVAIL) dev->tbusy = 0; |