I'm currently working with Ingo's RT patched kernel, but I believe this
affects the mainline too.
If the transmit buffer of the e100 overflowed, then the system would
hang. This was caused because the e100 driver would stop the queue, and
find_skb in netpoll.c would then loop forever. This is because the e100
net_poll would never start the queue again after the transmits have
completed.
For those that use the e100 and netconsole, all you need to do is a
sysreq 't' to lock up the system.
Here's the patch: (from Ingo's linux-2.6.11-rc2-V0.7.36-02, but should
be OK with 2.6.11-rc2)
Index: drivers/net/e100.c
===================================================================
--- drivers/net/e100.c (revision 60)
+++ drivers/net/e100.c (working copy)
@@ -1630,6 +1630,7 @@
struct nic *nic = netdev_priv(netdev);
e100_disable_irq(nic);
e100_intr(nic->pdev->irq, netdev, NULL);
+ e100_tx_clean(nic);
e100_enable_irq(nic);
}
#endif
-- Steve
On Sat, 2005-01-22 at 20:52 -0500, Steven Rostedt wrote:
> I'm currently working with Ingo's RT patched kernel, but I believe this
> affects the mainline too.
>
> If the transmit buffer of the e100 overflowed, then the system would
> hang. This was caused because the e100 driver would stop the queue, and
> find_skb in netpoll.c would then loop forever. This is because the e100
^^^^^^^^^
Should be netpoll_send_pkt. That's what I get when I search for
"repeat" to remember which function I saw the problem in.
> net_poll would never start the queue again after the transmits have
> completed.
>
> For those that use the e100 and netconsole, all you need to do is a
> sysreq 't' to lock up the system.
>
> Here's the patch: (from Ingo's linux-2.6.11-rc2-V0.7.36-02, but should
> be OK with 2.6.11-rc2)
>
>
> Index: drivers/net/e100.c
> ===================================================================
> --- drivers/net/e100.c (revision 60)
> +++ drivers/net/e100.c (working copy)
> @@ -1630,6 +1630,7 @@
> struct nic *nic = netdev_priv(netdev);
> e100_disable_irq(nic);
> e100_intr(nic->pdev->irq, netdev, NULL);
> + e100_tx_clean(nic);
> e100_enable_irq(nic);
> }
> #endif
>
>
>
> -- Steve
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
--
Steven Rostedt
Senior Engineer
Kihon Technologies