Bug 9283 - 3c905b hangs under heavy load
3c905b hangs under heavy load
Status: CLOSED CURRENTRELEASE
Product: Red Hat Linux
Classification: Retired
Component: kernel (Show other bugs)
6.1
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Michael K. Johnson
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2000-02-09 16:45 EST by Brian Brock
Modified: 2008-05-01 11:37 EDT (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2001-04-18 16:48:54 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Brian Brock 2000-02-09 16:45:00 EST
From a customer:

Using a home grown client/server app, I have been able to easily crash
linux. The application is a
simple udp sender/receiver. The udp receiver runs on a linux machine with a
3c905b ethernet
card which uses the latest version of the 3c59x.o module (v0.99L), and the
kernel is 2.2.12-20. By sending the linux machine a 100MB file as fast as
the sender can send it on a 100Mbps network, the linux machine responds by
freezing up completely with a console message that states:

eth1: Too much work in interrupt, status e481. Temporarily disabling
functions(7b7e).

Unfortunately, temporarily seems to mean "forever"...

Here is a snip from 3c59x.c:

---------snip-----------
                if (--work_done < 0) {
                        if ((status & (0x7fe - (UpComplete |
DownComplete))) ==
+0) {
                                /* Just ack these and return. */
                                outw(AckIntr | UpComplete | DownComplete,
ioaddr++ EL3_CMD);
                        } else
{
printk(KERN_WARNING "%s: Too much work in
+interrupt, status "
                                           "%4.4x.  Temporarily disabling
+functions (%4.4x).\n",
                                           dev->name, status, SetStatusEnb
|
+((~status) & 0x7FE));
                                /* Disable all pending interrupts. */
                                outw(SetStatusEnb | ((~status) & 0x7FE),
ioaddr
++ EL3_CMD);
                                outw(AckIntr | 0x7FF, ioaddr + EL3_CMD);
                                /* The timer will reenable interrupts. */
                                break;

}
}
---------snip-----------

Notice the comment that says "Timer will reenable interrupts".... That's
not
happening, my testing has
been on two separate machines with the same kernel/card/driver and neither
machine ever comes
back to life. Has anyone else seen this?? Any solutions?? Is this a driver
problem or a kernel problem
or what?? I can post the source code to the app used to freeze the linux
machine, but it's just a simple
udp receiver that reads from the socket and writes to disk...
Comment 1 Kim Zayac 2000-02-10 18:39:59 EST
I am having a similiar problem with 3 of my servers running Linux 6.1 with 3Com
Network Cards.  My problem relates to apache/web server application(s) which
like your app would burst large files out via the Ehternet Card.

I do not get the message..  But that is because the screen blanker probably
kicks in or something...  I have read somewhere that kernel 2.2 made some change
to IRQ processing and older versions of Dlink drivers hung Linux.
Comment 2 Alan Cox 2000-08-08 15:30:29 EDT
Workaround for 6.1 users

load the module with max_interrupt_work=10000
Comment 3 Trond Eivind Glomsrxd 2001-04-18 16:48:49 EDT
Is this still a problem with the recently released 2.2.19-6.2.1 errata kernel?
Comment 4 Trond Eivind Glomsrxd 2002-08-21 14:24:04 EDT
Closing due to lack and feedback, besides RHL 6.1 is no longer supported...

Note You need to log in before you can comment on or make changes to this bug.