On Mon, 2012-11-26 at 11:01 +0100, Tino Keitel wrote:
On Sat, Nov 24, 2012 at 15:43:36 -0800, Eric Dumazet wrote:
[...]
quoted
Hmm, I wonder if BQL makes a particular bug showing more often.
I see gianfar uses a very small watchdog_timeo of 1 second, while many
drivers use 5 seconds.
What happens if you change this to 5 seconds ?
I still got the trace and a failing ptp client.
Thanks. Is this bug easy to trigger ?
I suspect a core issue and a race, likely to happen on your (non x86)
hardware
Could you add the following debugging patch ?
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index aefc150..a8859ec 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -117,7 +117,7 @@ int sch_direct_xmit(struct sk_buff *skb, struct Qdisc *q,
int ret = NETDEV_TX_BUSY;
/* And release qdisc */
- spin_unlock(root_lock);
+// spin_unlock(root_lock);
HARD_TX_LOCK(dev, txq, smp_processor_id());
if (!netif_xmit_frozen_or_stopped(txq))
@@ -125,7 +125,7 @@ int sch_direct_xmit(struct sk_buff *skb, struct Qdisc *q,
HARD_TX_UNLOCK(dev, txq);
- spin_lock(root_lock);
+// spin_lock(root_lock);
if (dev_xmit_complete(ret)) {
/* Driver sent out skb successfully or skb was consumed */