Re: PROBLEM: Network hang: "eth0: Tx timed out (f0080), is buffer full?"

Richard Ems
2004-12-20T14:34:54Z

Hi Jon, hi list.

The following patch is what I'm trying now:
(I added the *np declaration to your patch, is this correct?)

Thanks, Richard

--- dl2k.c,orig-save-2004.12.20 2004-12-20 09:32:19.000000000 +0100
+++ dl2k.c 2004-12-20 15:24:39.051556188 +0100
@@ -562,9 +562,11 @@
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 + DMACtrl), readw(ioaddr + IntEnable));
rio_free_tx(dev, 0);
dev->if_port = 0;
dev->trans_start = jiffies;
@@ -1005,8 +1007,9 @@
/* 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 + DMACtrl), readw(ioaddr +
IntEnable));
writew (GlobalReset | HostReset, ioaddr + ASICCtrl + 2);
mdelay (500);
}

--
Richard Ems
Tel: +49 40 65803 312
Fax: +49 40 65803 392
Richard.Ems@mtg-marinetechnik.de

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