RE: ks8851: reset on RX failure and TX timeout

From: Nekludov, Max
Date: Thu Apr 10 2014 - 05:16:39 EST


I've tried to use ndo_tx_timeout. Actually it works. But it takes too long time after TX failure and before watchdog fires.

As I understand ndo_tx_timeout will be called only if tx queue is stopped. But ks8851 driver stops queue only after it's full.
So one have to send a lot of data to reset device (~6KiB).

But I need to recover as fast as possible. Could you suggest how to achieve that?
________________________________________
From: David Miller <davem@xxxxxxxxxxxxx>
Sent: Thursday, April 3, 2014 9:32 PM
To: Nekludov, Max
Cc: torvalds@xxxxxxxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; sboyd@xxxxxxxxxxxxxx; mjr@xxxxxxxxxxx; jiri@xxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; trivial@xxxxxxxxxxxxxxx
Subject: Re: ks8851: reset on RX failure and TX timeout

From: "Nekludov, Max" <Max.Nekludov@xxxxxxxxxx>
Date: Wed, 2 Apr 2014 06:31:23 +0000

> Electromagnetic noise can make device to not send TX interrupts.
> As result outgoing queue will be suspended forever.
> Also EMI can raise RX interrupt with zero value in KS_RXFC register.
>
> Signed-off-by: Max Nekludov <Max.Nekludov@xxxxxxxxxx>

We have a watchdog facility for TX timeouts, don't reinvent the wheel.

Implement ->ndo_tx_timeout() and set dev->watchdog_timeo appropriately.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/