大家好:
板子信息:imx6ull双网口分别通过MII(COL、CRS已使用)和RMII接口物理芯片ksz8721,系统使用linux4.1.15。
在使用imx6ull的MII接口的网口使用iperf3做压力测试时,内核会出现网络超时。打印信息如下:
# iperf3 -c 192.168.1.11 -t 1024
[ 5] 122.00-123.00 sec 0.00 Bytes 0.00 bits/sec 0 15.7 KBytes
[ 5] 123.00-124.00 sec 0.00 Bytes 0.00 bits/sec 0 15.7 KBytes
[ 5] 124.00-125.00 sec 0.00 Bytes 0.00 bits/sec [5 KBytes5.sec
0 ] 125.00-126.00 秒 0.00 字节 0.00 位/秒 0 15.7 字节
[5] 126.00-127.00 秒 0.00 字节 0.00 位/秒 0 15.7 字节
[5] 127.00-128.00 秒 0.00 字节 0.00 位/秒 7 0 15 字节
[ 142.051928] ------------ [在此处剪切] ------------
[ 142.056571] 警告:CPU:0 PID:0 at net/sched/sch_generic.c :305 dev_watchdog+0x2dc/0x30c()
[142.065014] NETDEV WATCHDOG: eth0 (fec): 传输队列 0 超时
[142.071284] 链接的模块:
[ 142.074363] CPU: 0 PID: 0 Comm: swapper Not tainted 4.1.15- rt18-svn46 #126
[142.081241]硬件名称:Freescale i.MX6 Ultralite(设备树)
[142.087424]回溯:
[142.089905][<80013014>](dump_backtrace)来自[<80013234>](show_stack+0x18/0x1c)
[ 142.097477] r7:804684d8 r6:00000131 r5:00000009 r4:00000000
[ 142.103205] [<8001321c>] (show_stack) 来自 [<80545e68>] (dump_stack+0x24/0x28)
[142.110442] [<80545e44>](dump_stack)来自[<8002d2b0>](warn_slowpath_common+0x88/0xb4)[142.118546] [142.118546] [
<8002d2228>
] ] r8:00000000 r7:80779f52 r6:80750610 r5:9a313a00 r4:806c8c60
[ 142.134045] [<8002d2e0>] (warn_slowpath_fmt) from [<804684d8>] (dev_watchdog+0x2dc/0x30c)
[ 142.142224] r3:9a315800 r2:806c8c60
[ 142.145825] R4:9A315800
[142.148383] [<804681fc>](dev_watchdog)来自[<8006AF94>](call_
timer_fn+0x2c/
0xa0
) [<8006af68>] (call_timer_fn) 来自 [<8006b4b4>] (run_timer_softirq+0x2b8/0x2d0)
[ 142.171078] r6:00000000 r5:807bea80 r4:9a315a2c
[ 142.175745] [<8006b1fc>] (run_timer_softirq) from [<8002ff7c>] (__do_softirq+0x114/0x238)
[ 142.183923] r10:00000101 r9:00000001 r8:00000004 r7:8077ce84 r6:80740000 r5:00000000
[ 142.191817] r4: 8077ce88
[ 142.194373] [<8002fe68>] (__do_softirq) from [<80030544>] (irq_exit+0xb8/0x100)
[ 142.201682] r10:00000000 r9:00000021 r8:9a005000 r7:00000000 r6:00000000 r5:00000010
[ 142.209574] r4 :80759938
[ 142.212132] [<8003048c>] (irq_exit) from [<8005c528>] (__handle_domain_irq+0x60/0xb0)
[ 142.219961] r5:00000010 r4:80759938
[ 142.223570] [<8005c4c8>] (__handle_domain_irq) from [<800093e8 >] (gic_handle_irq+0x2c/0x5c)
[ 142.231920] r9:00000021 r8:0eabc2ee r7:f4a02000 r6:80741ed8 r5:80742354 r4:f4a0200c
[ 142.239734] [<800093bc>] (gic_handle_irq) from [<80013d80>] (__irq_svc+0x40/0x88)
[ 142.247221] Exception stack(0x80741ed8 to 0x80741f20)
[ 142.252278] 1ec0: 80741f28 fffffff7
[ 142.260464] 1ee0: 123e69f8 00000021 123e69f8 00000021 8076cbb8 00000002 0eabc2ee 00000021
[ 142.268648] 1f00: 00000000 80741f5c 00000017 80741f20 a6aaaaab 803d85e8 600f0013 ffffffff
[ 142.276828] r7:80741f0c r6:ffffffff r5:600f0013 r4:803d85e8
[ 142.282550] [<803d8560>] (cpuidle_enter_state) from [<803d8774>] ( CPUIDLE_ENTER+0x1C/0x20)
[142.290814] R10:8076CBB0 R9:00000001 R8:807420D4 R7:8074C140 R6:8076CBB8 R5:807420D4 [142.298707] R4:80774:80774.4:8074.4:8074.4:8074.4:8074.4:8074.4:14.44:14.44:14.44:ifly.14.4.4.4.4.400
lib
youdy.ulyfor (cpu_startup_entry+0x178/0x23c)
[ 142.309545] [<80053d70>] (cpu_startup_entry) 来自 [<80542530>] (rest_init+0x8c/0x90)
[ 142.317291] r7:ffffffff
[ 142.319849] [<805424a4>] (rest_init) 来自 [<807 (05_startker8>] 0x3A4/0x3B0)
[142.327332] R5:8077C000 R4:8077C050
[142.330945] [<80705944>](start_kernel)来自[<80008078>](
0x80008078
) fec 20b4000.ethernet eth0: TX ring dump
[ 142.346993] Nr SC addr len SKB
[ 142.351357] 0 0x1c00 0x9a482800 1460 9a4605f0
[ 142.356151] cdb_esc = 0x18000000
[ 142.359385] 1 0x1400 0x9a482000 54 (null)
[ 142.364179] cdb_esc = 0x58000000
[ 142.367414] 2 0x1c00 0x9a949e30 1460 9a460170
[ 142.372208] cdb_esc = 0x18000000
[142.375444] 3 0x1400 0x9a4c9000 54(空)
[142.380238] cdb_esc = 0x58000000
[142.383473] 4 0x1c00 0x9a4ca800 1460 9a4602f0
[142.3802f0]30x0c08 [142.383473]
1、经多次测试发现问题多出现在CPU主动发送的时候
2、在出现问题时使用显示波器查看TXD波型,会有稀疏的波型生成
3、跟踪代码发现txq->cur_tx也在移动(在fec_main.c中的fec_enet_tx_queue函数中)
4、查看了ENETx_EIR寄出中的(BABR、BABT、EBERR、LC、UN、PLR)对应的位置(已配置EIMR),均未设置1
5、查看了以下寄存器未发现相关错误位置或计数不为0

6、查看了增强传输缓冲区描述符(ebdp->cbd_esc)

其中EE、FE、位置1、(正常情况下也有位置的),bit30也有被位置1的情况,但TXE没有位置,其他错误位置均未出现位置。
7、使用MII-Lite(COL、CRS去掉)问题依然存在。
8、RMII接口正常
现在是我无法找到相关硬信息来表示网络发送出现的问题。也无法进行及时的恢复操作。
从分析来看是发送数据包降速的非常低引起的。
在发送环绕冲满区和超时时间到才出现上面描述的内部报错。