summaryrefslogtreecommitdiffstats
path: root/drivers/net/sunlance.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1998-03-17 22:05:47 +0000
committerRalf Baechle <ralf@linux-mips.org>1998-03-17 22:05:47 +0000
commit27cfca1ec98e91261b1a5355d10a8996464b63af (patch)
tree8e895a53e372fa682b4c0a585b9377d67ed70d0e /drivers/net/sunlance.c
parent6a76fb7214c477ccf6582bd79c5b4ccc4f9c41b1 (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.c26
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;