lkml.org 
[lkml]   [1997]   [Jun]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectEtherExpress 16 stall fix

Hi,

I had to swap my network card for an EtherExpress16, and noticed than
when I was ftp'ing _into_ my box (from a local machine) the transfer would
stall. The ftp was the only network traffic.

It appears that the networking layer calls the driver's xmit function
when 'tbusy' is set. For the eexpress, this caused the cards interrupts
to be disabled, but not immediately re-enabled. Hence the stall.

The attached patch (against 2.1.43) solves the problem. Please note,
the "udelay(50)" appears necessary on my box or else I get some (not many)
tx-interrupts with no status. (Infact, I still do get some under heavy
transmit, but no longer for receive).

Could anyone with this card, confirm they see this problem and the patch
fixes it. Thanks.


Regards,

markhe

PS: I couldn't find any doc on the i82586 online. Does anyone have any
references?


-----------------------------------------------------
Mark Hemment UNIX/C Software Engineer (contractor)
"Success has many fathers. Failure is a b**tard"
-----------------------------------------------------
--- linux/drivers/net/eexpress.c Thu Jun 26 15:28:45 1997
+++ linux-new/drivers/net/eexpress.c Thu Jun 26 17:46:51 1997
@@ -510,10 +510,17 @@
* is calling us anyway. Check that nothing bad is happening.
*/
if (dev->tbusy) {
- int status = scb_status(dev);
+ int status;
unstick_cu(dev);
- if ((jiffies - lp->last_tx) < HZ)
+ if ((jiffies - lp->last_tx) < HZ) {
+ /* Without a short delay, the card (well, mine) issues a
+ * tx intr with no status.
+ */
+ udelay(50);
+ outb(SIRQ_en|irqrmap[dev->irq],dev->base_addr+SET_IRQ);
return 1;
+ }
+ status = scb_status(dev);
printk(KERN_INFO "%s: transmit timed out, %s?", dev->name,
(SCB_complete(status)?"lost interrupt":
"board on fire"));
\
 
 \ /
  Last update: 2005-03-22 13:39    [W:0.046 / U:1.608 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site