Re: 2.6.3 - 8139too timeout debug info

From: OGAWA Hirofumi
Date: Sun Feb 29 2004 - 03:11:03 EST


OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx> writes:

> "Nick Warne" <nick@xxxxxxxxx> writes:
>
> > Thanks for your help. I have hell of a trouble doing this, as soon
> > as any network load happens, the box becomes unresponsive during
> > timeouts - but hopefully I have caught the info required.
>
> Umm.. Looks like chip registers is normal, but TX/RX interrupt doesn't
> happen. (BTW, there isn't rtl8139_open on debuginfo.txt. Was it already
> scrolled?)
>
> The following patch (incremental patch) is some part reverts to
> 2.6.2. Is behavior changed?

Oops, wrong patches. Please try these.
--
OGAWA Hirofumi <hirofumi@xxxxxxxxxxxxxxxxxx>

---

drivers/net/8139too.c | 14 ++++++--------
1 files changed, 6 insertions(+), 8 deletions(-)

diff -puN drivers/net/8139too.c~8139too-revert01 drivers/net/8139too.c
--- linux-2.6.3/drivers/net/8139too.c~8139too-revert01 2004-02-29 17:02:32.000000000 +0900
+++ linux-2.6.3-hirofumi/drivers/net/8139too.c 2004-02-29 17:02:59.000000000 +0900
@@ -1374,6 +1374,7 @@ static int rtl8139_open (struct net_devi

rtl8139_start_thread(dev);

+ printk("%s: revert01\n", dev->name);
spin_lock_irq(&tp->lock);
RTL8139_DUMP(dev);
spin_unlock_irq(&tp->lock);
@@ -2043,12 +2044,10 @@ static int rtl8139_rx(struct net_device
skb_put (skb, pkt_size);

skb->protocol = eth_type_trans (skb, dev);
-
+ netif_rx (skb);
dev->last_rx = jiffies;
tp->stats.rx_bytes += pkt_size;
tp->stats.rx_packets++;
-
- netif_receive_skb (skb);
} else {
if (net_ratelimit())
printk (KERN_WARNING
@@ -2204,11 +2203,10 @@ static irqreturn_t rtl8139_interrupt (in

/* Receive packets are processed by poll routine.
If not running start it now. */
- if (status & RxAckBits){
- if (netif_rx_schedule_prep(dev)) {
- RTL_W16_F (IntrMask, rtl8139_norx_intr_mask);
- __netif_rx_schedule (dev);
- }
+ if (status & RxAckBits) {
+ RTL_W16_F(IntrMask, rtl8139_norx_intr_mask);
+ rtl8139_rx(dev, tp, dev->weight);
+ RTL_W16_F(IntrMask, rtl8139_intr_mask);
}

/* Check uncommon events with one test. */

_
---

drivers/net/8139too.c | 7 ++-----
1 files changed, 2 insertions(+), 5 deletions(-)

diff -puN drivers/net/8139too.c~8139too-revert02 drivers/net/8139too.c
--- linux-2.6.3/drivers/net/8139too.c~8139too-revert02 2004-02-29 17:04:38.000000000 +0900
+++ linux-2.6.3-hirofumi/drivers/net/8139too.c 2004-02-29 17:04:58.000000000 +0900
@@ -1374,7 +1374,7 @@ static int rtl8139_open (struct net_devi

rtl8139_start_thread(dev);

- printk("%s: revert01\n", dev->name);
+ printk("%s: revert02\n", dev->name);
spin_lock_irq(&tp->lock);
RTL8139_DUMP(dev);
spin_unlock_irq(&tp->lock);
@@ -2203,11 +2203,8 @@ static irqreturn_t rtl8139_interrupt (in

/* Receive packets are processed by poll routine.
If not running start it now. */
- if (status & RxAckBits) {
- RTL_W16_F(IntrMask, rtl8139_norx_intr_mask);
+ if (status & RxAckBits)
rtl8139_rx(dev, tp, dev->weight);
- RTL_W16_F(IntrMask, rtl8139_intr_mask);
- }

/* Check uncommon events with one test. */
if (unlikely(status & (PCIErr | PCSTimeout | RxUnderrun | RxErr)))

_