Unserviced interrupts due to Flow Control Paused status bit

Krawl, Roeland RKrawl@microtest.com
Wed Mar 1 23:32:16 2000


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_001_01BF8400.312772E0
Content-Type: text/plain

A possible flaw in the eepro100.c driver (version 1.09l  8/7/99) is causing
Linux to hang due to unserviced NIC interrupts.

Just after the bootd daemon issues the messages "Starting Network" and
"Starting DHCP",  the prepareInterface() routine in bootd/if.c will issue a
SIOCSIFFLAGS ioctl call (from the prepareInterface routine) which NEVER
COMPLETES. The Linux box hangs as a result of unserviced NIC interrupts.

Apparently, the speedo_interrupt() routine does not properly service the
interrupt when the System Control Block Status Word contains 0x150.
According to the 82559ER datasheet, this status means that the Flow Control
Paused bit is set.  ( The datasheet provides no information about how to
interpret the transmitter and receiver status bits). Does a value of 0x400
written to the SCB command word acknowledge the interrupt?

I have noticed that the symptom will go away when various kernel modules
grow in size as a result of added code.

I would prefer to fix the problem rather than have it reappear in future
kernel rebuilds. I suspect that an uninitialized variable or a partially
initialized 82559 is causing this symptom.

The 82559ER datasheets are not acceptable for writing a driver. I am trying
to obtain suitable documentation from Intel but so far have had no luck. I
am convinced that the info is not on the Intel website and I am hoping that
an open tech support incident with Intel will eventually prove fruitful.

Obviously, Donald Becker found such a document. Does anyone know an
efficient way to obtain the programmer's manual from Intel?

Your ideas or suggestions are welcome.

Thanks,
Roeland Krawl


------_=_NextPart_001_01BF8400.312772E0
Content-Type: text/html
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">



Unserviced interrupts due to Flow Control Paused status =
bit



A possible flaw in the eepro100.c = driver (version 1.09l  8/7/99) is causing Linux to hang due to = unserviced NIC interrupts.

Just after the bootd daemon issues the = messages "Starting Network" and "Starting = DHCP",  the prepareInterface() routine in bootd/if.c will = issue a SIOCSIFFLAGS ioctl call (from the prepareInterface routine) = which NEVER COMPLETES. The Linux box hangs as a result of unserviced = NIC interrupts.

Apparently, the speedo_interrupt() = routine does not properly service the interrupt when the System Control = Block Status Word contains 0x150. According to the 82559ER datasheet, = this status means that the Flow Control Paused bit is set.  ( The = datasheet provides no information about how to interpret the = transmitter and receiver status bits). Does a value of 0x400 written to = the SCB command word acknowledge the interrupt?

I have noticed that the symptom will = go away when various kernel modules grow in size as a result of added = code.

I would prefer to fix the problem = rather than have it reappear in future kernel rebuilds. I suspect that = an uninitialized variable or a partially initialized 82559 is causing = this symptom.

The 82559ER datasheets are not = acceptable for writing a driver. I am trying to obtain suitable = documentation from Intel but so far have had no luck. I am convinced = that the info is not on the Intel website and I am hoping that an open = tech support incident with Intel will eventually prove = fruitful.

Obviously, Donald Becker found such a = document. Does anyone know an efficient way to obtain the programmer's = manual from Intel?

Your ideas or suggestions are = welcome.

Thanks,
Roeland Krawl

------_=_NextPart_001_01BF8400.312772E0-- ------------------------------------------------------------------- To unsubscribe send a message body containing "unsubscribe" to linux-eepro100-request@beowulf.org