嵌入式开发者社区

标题: cpsw发udp小包时timeout且无法恢复(4.4.19内核) [打印本页]

作者: Andee    时间: 2019-8-28 08:52
标题: cpsw发udp小包时timeout且无法恢复(4.4.19内核)
1. 最近在SDK3.01的内核(4.4.19)上遇到一个问题,使用iperf发udp小包,一段时间后会出现“NETDEV WATCHDOG: eth0 (cpsw): transmit queue 0 timed out”这样的log,此时网卡阻塞了,对外ping不通,并且没有自动恢复。发送udp小包的命令如下:
iperf -u -c 192.168.100.111 -p12345 -i1 -t9999 -l100 -b70m -P2
运行一会后会出现如下log:
root@am57xx-evm:~# [  339.011780] ------------[ cut here ]------------
[  339.016465] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:306 dev_watchdog+0x284/0x290()
[  339.024983] NETDEV WATCHDOG: eth0 (cpsw): transmit queue 0 timed out

2. 我对比4.9.65的kernel代码发现,4.4.19的代码在cpsw网卡发送超时后没有重新唤醒发送队列。于是我参照4.9.65的做法,把唤醒代码加到4.4.19上,但是发现cpsw的timeout根本就没有被调用到。我在cpsw_ndo_tx_timeout里面添加打印log,没有打印出来。

以上两个问题,有遇到类似经历的,帮忙回复一下。感谢!





欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4