John Bäckstrand <[email protected]> writes:
> I've been trying to hunt down a hard lockup issue with some hardware
> of mine, but I've possibly hit a kernel bug instead. When using
> netconsole on my e1000, if I unplug the cable and then re-plug it, the
> machine locks up hard. It manages to print the "link up" message on
> the screen, but nothing after that. Now, I wonder if this is supposed
> to be so? I tried this on 4 different configurations, 2.6.13-rc5 and
> 2.6.12 with and without "noapic acpi=off", same result on all of
> them. I've tried with 1 and 3 other NICs in the machine at the same
> time.
I ran into the same problem some time ago on e1000. The problem was
that if the link doesn't come up netconsole ends up waiting forever
for it.
The patch was for 2.6.12, did a quick untested port to 2.6.13rc5.
-Andi
Only try a limited number to send packets in netpoll
Avoids hangs on e1000 when link is not up.
Signed-off-by: Andi Kleen <[email protected]>
Index: linux/net/core/netpoll.c
===================================================================
--- linux.orig/net/core/netpoll.c
+++ linux/net/core/netpoll.c
@@ -247,9 +247,11 @@ static void netpoll_send_skb(struct netp
{
int status;
struct netpoll_info *npinfo;
+ /* Only try 5 times in case the link is down etc. */
+ int try = 5;
repeat:
- if(!np || !np->dev || !netif_running(np->dev)) {
+ if(try-- == 0 || !np || !np->dev || !netif_running(np->dev)) {
__kfree_skb(skb);
return;
}
@@ -286,6 +288,9 @@ repeat:
/* transmit busy */
if(status) {
+ /* Don't count spinlock as try */
+ if (status == NETDEV_TX_LOCKED)
+ try++;
netpoll_poll(np);
goto repeat;
}
-
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/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
|
|