On our imx6q board running kernel 3.14.28, we have encountered a case that the transmit queue timing out on eth0. So I just want to know is there something wrong in the fec driver that is causing this? If so, is there a patch available that can fix this problem?
------------[ cut here ]------------
WARNING: CPU: 1 PID: 0 at net/sched/sch_generic.c:264 dev_watchdog+0x24c/0x26c()
NETDEV WATCHDOG: eth0 (fec): transmit queue 0 timed out
Modules linked in: mxc_v4l2_capture ipu_fg_overlay_sdc ipu_csi_enc ipu_prp_enc v4l2_int_device ipu_still ipu_bg_overlay_sdc evbug
CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.14.28-1.0.0_ga #37
[<80016400>] (unwind_backtrace) from [<80011c68>] (show_stack+0x10/0x14)
[<80011c68>] (show_stack) from [<80646cd0>] (dump_stack+0x6c/0xb8)
[<80646cd0>] (dump_stack) from [<8002d7c4>] (warn_slowpath_common+0x64/0x88)
[<8002d7c4>] (warn_slowpath_common) from [<8002d87c>] (warn_slowpath_fmt+0x30/0x40)
[<8002d87c>] (warn_slowpath_fmt) from [<80528218>] (dev_watchdog+0x24c/0x26c)
[<80528218>] (dev_watchdog) from [<80036f5c>] (call_timer_fn.isra.27+0x24/0x84)
[<80036f5c>] (call_timer_fn.isra.27) from [<80037140>] (run_timer_softirq+0x184/0x208)
[<80037140>] (run_timer_softirq) from [<800312c4>] (__do_softirq+0xf4/0x204)
[<800312c4>] (__do_softirq) from [<8003163c>] (irq_exit+0xa8/0xec)
[<8003163c>] (irq_exit) from [<8000f3b8>] (handle_IRQ+0x3c/0x94)
[<8000f3b8>] (handle_IRQ) from [<800084e0>] (gic_handle_irq+0x28/0x5c)
[<800084e0>] (gic_handle_irq) from [<80012740>] (__irq_svc+0x40/0x70)
Exception stack(0xbc09df60 to 0xbc09dfa8)
df60: bc09dfa8 3b9aca00 cceabf19 0000196f cc9f8013 0000196f bf7db0d0 00000000
df80: 00000000 412fc09a 00000001 00000000 fffffff7 bc09dfa8 8007110c 804401d0
dfa0: 60010013 ffffffff
[<80012740>] (__irq_svc) from [<804401d0>] (cpuidle_enter_state+0x50/0xe8)
[<804401d0>] (cpuidle_enter_state) from [<80440308>] (cpuidle_idle_call+0xa0/0x154)
[<80440308>] (cpuidle_idle_call) from [<8000f6e0>] (arch_cpu_idle+0x8/0x44)
[<8000f6e0>] (arch_cpu_idle) from [<80065a88>] (cpu_startup_entry+0x5c/0x148)
[<80065a88>] (cpu_startup_entry) from [<100085a4>] (0x100085a4)
---[ end trace 616f1c3cf5d513ca ]---
fec 2188000.ethernet eth0: TX ring dump
Nr SC addr len SKB
0 0x1400 0x00000000 54 (null)
1 0x1c00 0x00000000 1460 (null)
2 0x1400 0x00000000 54 (null)
3 0x1c00 0x00000000 1460 (null)
4 0x1400 0x00000000 54 (null)
All of Above is the error log information
Hi
please check "queue timing out" error source and solutions
provided on
Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
But I have checked my source, TX_RING_SIZE is 512。
The following is the configuration of my code:
#define RX_RING_SIZE (FEC_ENET_RX_FRPPG * FEC_ENET_RX_PAGES)
#define FEC_ENET_TX_FRSIZE 2048
#define FEC_ENET_TX_FRPPG (PAGE_SIZE / FEC_ENET_TX_FRSIZE)
#define TX_RING_SIZE 512 /* Must be power of two */
#define TX_RING_MOD_MASK 511 /* for this to work */
#define BD_ENET_RX_INT 0x00800000