lkml.org 
[lkml]   [2004]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
SubjectRe: 8139too not working in 2.6
From
Date
David Johnson <dj@david-web.co.uk> writes:

> Attached is my dmesg, lspci and the output of dump_pirq.pl.
> This was when running 2.6.6-rc1.

Looks like 8139too still isn't loaded. Could you apply the attached
patch, and send the output of dmesg after the problem was happened?

I'd like to see the debugging message of rtl8139_tx_timeout().

Thanks.
--
OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>


[PATCH] 8139too: more useful debug info for tx_timeout

/* disable Tx ASAP, if not already */
tmp8 = RTL_R8 (ChipCmd);
if (tmp8 & CmdTxEnb)
RTL_W8 (ChipCmd, CmdRxEnb);

The above will clear the Tx Descs. So, this prints the debugging info
before rtl8139_tx_timeout() does it. And IntrStatus etc. also prints
anytime for the debug.


---

drivers/net/8139too.c | 26 +++++++++++---------------
1 files changed, 11 insertions(+), 15 deletions(-)

diff -puN drivers/net/8139too.c~8139too-useful-txtimeout drivers/net/8139too.c
--- linux-2.6.6-rc2/drivers/net/8139too.c~8139too-useful-txtimeout 2004-04-22 02:14:42.000000000 +0900
+++ linux-2.6.6-rc2-hirofumi/drivers/net/8139too.c 2004-04-22 02:14:42.000000000 +0900
@@ -1677,11 +1677,17 @@ static void rtl8139_tx_timeout (struct n
u8 tmp8;
unsigned long flags;

- DPRINTK ("%s: Transmit timeout, status %2.2x %4.4x "
- "media %2.2x.\n", dev->name,
- RTL_R8 (ChipCmd),
- RTL_R16 (IntrStatus),
- RTL_R8 (MediaStatus));
+ printk (KERN_DEBUG "%s: Transmit timeout, status %2.2x %4.4x %4.4x "
+ "media %2.2x.\n", dev->name, RTL_R8 (ChipCmd),
+ RTL_R16(IntrStatus), RTL_R16(IntrMask), RTL_R8(MediaStatus));
+ /* Emit info to figure out what went wrong. */
+ printk (KERN_DEBUG "%s: Tx queue start entry %ld dirty entry %ld.\n",
+ dev->name, tp->cur_tx, tp->dirty_tx);
+ for (i = 0; i < NUM_TX_DESC; i++)
+ printk (KERN_DEBUG "%s: Tx descriptor %d is %8.8lx.%s\n",
+ dev->name, i, RTL_R32 (TxStatus0 + (i * 4)),
+ i == tp->dirty_tx % NUM_TX_DESC ?
+ " (queue head)" : "");

tp->xstats.tx_timeouts++;

@@ -1694,15 +1700,6 @@ static void rtl8139_tx_timeout (struct n
/* Disable interrupts by clearing the interrupt mask. */
RTL_W16 (IntrMask, 0x0000);

- /* Emit info to figure out what went wrong. */
- printk (KERN_DEBUG "%s: Tx queue start entry %ld dirty entry %ld.\n",
- dev->name, tp->cur_tx, tp->dirty_tx);
- for (i = 0; i < NUM_TX_DESC; i++)
- printk (KERN_DEBUG "%s: Tx descriptor %d is %8.8lx.%s\n",
- dev->name, i, RTL_R32 (TxStatus0 + (i * 4)),
- i == tp->dirty_tx % NUM_TX_DESC ?
- " (queue head)" : "");
-
/* Stop a shared interrupt from scavenging while we are. */
spin_lock_irqsave (&tp->lock, flags);
rtl8139_tx_clear (tp);
@@ -1714,7 +1711,6 @@ static void rtl8139_tx_timeout (struct n
netif_wake_queue (dev);
}
spin_unlock(&tp->rx_lock);
-
}


_
\
 
 \ /
  Last update: 2005-03-22 14:02    [W:1.748 / U:0.032 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site