Hi Chris
我们使用8127遇到一个问题,
我们使用了两个网口, 模式为 CONFIG_TI_CPSW_DUAL_EMAC
每个网口都工作在不同的网段,例如 eth0 IP 192.168.9.182, eth1 10.100.23.251, 接在同一个交换机上,
有一定的概率(千兆交换机大概一半,百兆交换机 五分之一),会出现网口起不来, 现象为,ping不通,
cat /sys/class/net/eth0/hw_stats 出现
rxsofoverruns ……………………… 5995
rxdmaoverruns ……………………… 5995
这两个overruns 一直在增加。
最终出现下面的警告信息,并且恢复不了。
WARNING: at net/sched/sch_generic.c:258 dev_watchdog+0x148/0x230()
NETDEV WATCHDOG: eth0 (cpsw): transmit queue 0 timed out
Modules linked in: ti81xxhdmi vpss osa_kermod syslink dsplink sensor fpga gpio ti_cpsw
Backtrace:
[<c004af70>] (dump_backtrace+0x0/0x110) from [<c036e924>] (dump_stack+0x18/0x1c)
r6:c0457f19 r5:00000102 r4:c0481e10 r3:60000113
[<c036e90c>] (dump_stack+0x0/0x1c) from [<c006f4b8>] (warn_slowpath_common+0x54/0x6c)
[<c006f464>] (warn_slowpath_common+0x0/0x6c) from [<c006f574>] (warn_slowpath_fmt+0x38/0x40)
r8:c02f5d94 r7:00000100 r6:00000000 r5:c04f75d4 r4:cb18b000
r3:00000009
[<c006f53c>] (warn_slowpath_fmt+0x0/0x40) from [<c02f5edc>] (dev_watchdog+0x148/0x230)
r3:cb18b000 r2:c0457f31
[<c02f5d94>] (dev_watchdog+0x0/0x230) from [<c00797e0>] (run_timer_softirq+0x130/0x1c8)
r6:00000100 r5:c0480000 r4:c04e2f40
[<c00796b0>] (run_timer_softirq+0x0/0x1c8) from [<c0074378>] (__do_softirq+0x84/0x114)
[<c00742f4>] (__do_softirq+0x0/0x114) from [<c0074768>] (irq_exit+0x48/0x98)
[<c0074720>] (irq_exit+0x0/0x98) from [<c003d07c>] (asm_do_IRQ+0x7c/0x9c)
[<c003d000>] (asm_do_IRQ+0x0/0x9c) from [<c03708f4>] (__irq_svc+0x34/0xa0)
Exception stack(0xc0481f38 to 0xc0481f80)
1f20: fe500000 fe600000
1f40: 0009e33d c04c1cc0 00000814 c048405c c04c1988 c0484054 80000000 413fc082
1f60: 0000001f c0481f94 c0481f80 c0481f80 c0057e2c c0057e38 a0000013 ffffffff
r5:fa200000 r4:ffffffff
[<c0057dbc>] (ti81xx_idle+0x0/0x90) from [<c0048618>] (cpu_idle+0x50/0x90)
r4:c0480000 r3:c0057dbc
[<c00485c8>] (cpu_idle+0x0/0x90) from [<c0369c58>] (rest_init+0x60/0x78)
r6:c0675980 r5:00000000 r4:c04e5ecc r3:00000000
[<c0369bf8>] (rest_init+0x0/0x78) from [<c0008c08>] (start_kernel+0x264/0x2b8)
[<c00089a4>] (start_kernel+0x0/0x2b8) from [<80008048>] (0x80008048)
—[ end trace b43003bd1f8c8e29 ]—
两个网口接在不同的交换机上无此现象。
请帮支持一下 多谢!
Chris Meng:
你好,
请问你使用的网络驱动是否为git上最新?http://arago-project.org/git/projects/?p=linux-dvr-rdk-dm81xx.git;a=summary
请问你是否有使能vlan?
old wang:
回复 Chris Meng:
我的网络驱动是IPNC_RDK里自带的, 不是http://arago-project.org/git/projects/?p=linux-dvr-rdk-dm81xx.git;a=summary
DUAL_MAC模式 vlan肯定是使能了。
上面帖子中那个3.2的改动,不知道哪里可以下到?
old wang:
回复 old wang:
我比了一下我的和下面链接中的网络驱动,
http://arago-project.org/git/projects/?p=linux-dvr-rdk-dm81xx.git;a=summary
主要差异为 CONFIG_PTP_1588_CLOCK_CPTS 这个不同,
davinci_cpdma.c
cpsw_ale.c
都一样,
所以应该不是我的驱动版本问题。
old wang:
回复 old wang:
编了一个版本
选了CONFIG_VLAN_8021Q
现象还是一样的
old wang:
回复 old wang:
e2e上帖子的链接
1
https://e2e.ti.com/support/embedded/linux/f/354/p/216491/764557?tisearch=e2e-sitesearch&keymatch=NETDEV%20WATCHDOG#764557
2
https://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/716/t/545712?tisearch=e2e-quicksearch&keymatch=transmit%20queue%200%20timed%20out
Chris Meng:
回复 old wang:
你好,
请问两个网口的mac地址是否不同?
old wang:
回复 Chris Meng:
两个网口mac地址不同。
因为没有回复,我只好照着patch,手工移植了一下,有一个告警的 oop.
但是测了10几次,貌似都好的。
old wang:
回复 old wang:
要是有完整的修复过的cpsw.c和davinci_cpdma.c代码,还是希望能发一下,参考一下。