Sorry, I was working off of the mm driver. I have verified that the patch below will apply cleanly with the driver you provided (and the previous patch applies cleanly to the 2.6.10-rc2-mm4 driver). --- /root/dl2k.c,orig-save-2004.12.20 2004-12-21 09:46:56.877062552 -0600 +++ dl2k.c 2004-12-20 14:22:31.000000000 -0600 @@ -429,23 +431,14 @@ parse_eeprom (struct net_device *dev) return 0; } -static int -rio_open (struct net_device *dev) +static void +rio_up (struct net_device *dev) { - struct netdev_private *np = dev->priv; + struct netdev_private *np = netdev_priv(dev); long ioaddr = dev->base_addr; int i; u16 macctrl; - i = request_irq (dev->irq, &rio_interrupt, SA_SHIRQ, dev->name, dev); - if (i) - return i; - - /* Reset all logic functions */ - writew (GlobalReset | DMAReset | FIFOReset | NetworkReset | HostReset, - ioaddr + ASICCtrl + 2); - mdelay(10); - /* DebugCtrl bit 4, 5, 9 must set */ writel (readl (ioaddr + DebugCtrl) | 0x0230, ioaddr + DebugCtrl); @@ -453,8 +446,6 @@ rio_open (struct net_device *dev) if (np->jumbo != 0) writew (MAX_JUMBO+14, ioaddr + MaxFrameSize); - alloc_list (dev); - /* Get station address */ for (i = 0; i < 6; i++) writeb (dev->dev_addr[i], ioaddr + StationAddr0 + i); @@ -488,12 +479,6 @@ rio_open (struct net_device *dev) ioaddr + MACCtrl); } - init_timer (&np->timer); - np->timer.expires = jiffies + 1*HZ; - np->timer.data = (unsigned long) dev; - np->timer.function = &rio_timer; - add_timer (&np->timer); - /* Start Tx/Rx */ writel (readl (ioaddr + MACCtrl) | StatsEnable | RxEnable | TxEnable, ioaddr + MACCtrl); @@ -505,10 +490,38 @@ rio_open (struct net_device *dev) macctrl |= (np->rx_flow) ? RxFlowControlEnable : 0; writew(macctrl, ioaddr + MACCtrl); - netif_start_queue (dev); - /* Enable default interrupts */ EnableInt (); +} + +static int +rio_open (struct net_device *dev) +{ + struct netdev_private *np = netdev_priv(dev); + long ioaddr = dev->base_addr; + int i; + + i = request_irq (dev->irq, &rio_interrupt, SA_SHIRQ, dev->name, dev); + if (i) + return i; + + /* Reset all logic functions */ + writew (GlobalReset | DMAReset | FIFOReset | NetworkReset | HostReset, + ioaddr + ASICCtrl + 2); + mdelay(10); + + alloc_list (dev); + + rio_up (dev); + + init_timer (&np->timer); + np->timer.expires = jiffies + 1*HZ; + np->timer.data = (unsigned long) dev; + np->timer.function = &rio_timer; + add_timer (&np->timer); + + netif_start_queue (dev); + return 0; } @@ -562,9 +575,11 @@ static void rio_tx_timeout (struct net_device *dev) { long ioaddr = dev->base_addr; + struct netdev_private *np = dev->priv; - printk (KERN_INFO "%s: Tx timed out (%4.4x), is buffer full?\n", - dev->name, readl (ioaddr + TxStatus)); + printk (KERN_INFO "%s: Tx timed out (%4.4x) %d %d %x %x\n", + dev->name, readl (ioaddr + TxStatus), np->cur_tx, np->cur_rx, + readl (ioaddr + MACCtrl), readw(ioaddr + IntEnable)); rio_free_tx(dev, 0); dev->if_port = 0; dev->trans_start = jiffies; @@ -1005,10 +1020,13 @@ rio_error (struct net_device *dev, int i /* PCI Error, a catastronphic error related to the bus interface occurs, set GlobalReset and HostReset to reset. */ if (int_status & HostError) { - printk (KERN_ERR "%s: HostError! IntStatus %4.4x.\n", - dev->name, int_status); + printk (KERN_ERR "%s: HostError! IntStatus %4.4x. %d %d %x %x\n", + dev->name, int_status, np->cur_tx, np->cur_rx, + readl (ioaddr + MACCtrl), readw(ioaddr + IntEnable)); writew (GlobalReset | HostReset, ioaddr + ASICCtrl + 2); mdelay (500); + + rio_up(dev); } } On Tue, 21 Dec 2004 10:51:00 +0100, Richard Ems <richard.ems@xxxxxxxxxxxxxxxxxxxx> wrote: > The patch fails: > > # patch -p0 < ~ems/dl2k.patch > patching file dl2k.c > Hunk #1 FAILED at 431. > Hunk #2 succeeded at 444 (offset -2 lines). > Hunk #3 succeeded at 477 (offset -2 lines). > Hunk #4 succeeded at 488 (offset -2 lines). > Hunk #5 succeeded at 573 (offset -2 lines). > Hunk #6 succeeded at 1018 (offset -2 lines). > 1 out of 6 hunks FAILED -- saving rejects to file dl2k.c.rej > > I tried with --fuzz 9 but it didn't help. > > I attached SuSE's original dl2k.c > > Thanks, Richard > > -- > Richard Ems > Tel: +49 40 65803 312 > Fax: +49 40 65803 392 > Richard.Ems@xxxxxxxxxxxxxxxxxxxx > > MTG Marinetechnik GmbH - Wandsbeker Königstr. 62 - D 22041 Hamburg > > GF Dipl.-Ing. Ullrich Keil > Handelsregister: Abt. B Nr. 11 500 - Amtsgericht Hamburg Abt. 66 > USt.-IdNr.: DE 1186 70571
Attachment:
dl2k.patch2
Description: Binary data