免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2108 | 回复: 3
打印 上一主题 下一主题

[网络子系统] 网卡通信问题请问各位大牛 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-01-08 14:46 |只看该作者 |倒序浏览
小弟有一款cavium板子,5020, 上面的网卡其中千兆的线由于主板设计问题不能连接。板子应可用100M或者10M连接。
但是当两台这样的机器对接的时候,发现连接不上,网口灯不亮。但是将一台板子里面的自协商关闭之后网口灯点亮,网络连接。
连接速率显示100M全双工。
但当这样对接之后,使用bw进行性能测试时, 关闭自协商的那台机器会panic,信息如下:
/ # Port 1 receive error code 6, packet dropped
Port 1 receive error code 6, packet dropped
Port 1 receive error code 6, packet dropped
CPU 0 Unable to handle kernel paging request at virtual address 0000000000000000, epc == ffffffff8138e0c4, ra == ffffffff8138e988
Oops[#1]:
Cpu 0
$ 0   : 0000000000000000 0000000000000008 0000000000000000 0000000000000000
$ 4   : a80000000db62a80 0000000000000040 0000000000000040 ffffffff8189f168
$ 8   : 0000000000000000 0000000000000000 ffffffff81482ac8 0000000000000000
$12   : 0000000000000010 ffffffff81105a74 a80000000f850000 0000000000000000
$16   : 0000000000000000 a800000002688ed8 a800000002688ee0 00000000ffffd08a
$20   : 0000000000000040 ffffffff818a0000 a800000002688f10 ffffffff818a0000
$24   : 0000000000000006 0000000000000000                                 
$28   : ffffffff81898000 ffffffff8189bb70 ffffffff821ee6a0 ffffffff8138e988
Hi    : 00000000000000cc
Lo    : fffffffff070e000
epc   : ffffffff8138e0c4 process_backlog+0x94/0x108
    Not tainted
ra    : ffffffff8138e988 net_rx_action+0x118/0x220
Status: 1000cce2    KX SX UX KERNEL EXL
Cause : 0080000c
BadVA : 0000000000000000
PrId  : 000d0601 (Cavium Octeon+)
Modules linked in: crypto_null authenc ebt_redirect ebtable_broute ebtables xt_comment xt_state iptable_nat nf_nat nf_conntrack_ipv4 nf_conntrack nf_defrag_ipv4 alg_init pcie_ssx06 octeon_gpio xfrm_user esp4
Process swapper (pid: 0, threadinfo=ffffffff81898000, task=ffffffff818a6880, tls=0000000000000000)
Stack : 0000000000000040 a800000002688f10 0000000000000006 0000000000000126
        a800000002688ed8 a800000002688ef8 00000000ffffd08b ffffffff8138e988
        0000000000000001 ffffffff8189c798 0000000000000018 0000000000000100
        0000000000000003 000000000000000a ffffffff821af1d0 ffffffff821ee6a0
        0000000000000000 ffffffff81158d1c 0000000000000000 8001070000000218
        8001070000000200 8001070000000000 8001070000000108 ffffffff821d0000
        0000000000000005 ffffffffc0103ca0 0000000000000000 ffffffff81158dd8
        0000000000000027 ffffffff8110c460 ffffffff821d0000 0000000000000000
        0000000000000001 ffffffff821d0000 ffffffff821d0000 ffffffff81105bd0
        0000000000000005 ffffffff81100888 0000000000000000 ffffffff821d0000
        ...
Call Trace:
[<ffffffff8138e0c4>] process_backlog+0x94/0x108
[<ffffffff8138e988>] net_rx_action+0x118/0x220
[<ffffffff81158d1c>] __do_softirq+0x154/0x1a0
[<ffffffff81158dd8>] do_softirq+0x70/0x78
[<ffffffff8110c460>] plat_irq_dispatch+0xd8/0x158
[<ffffffff81100888>] ret_from_irq+0x0/0x4
[<ffffffff81100a80>] r4k_wait+0x20/0x40
[<ffffffff81129d2c>] cpu_idle+0x74/0x90
[<ffffffff818d7aa4>] start_kernel+0x3bc/0x41c


Code: dc820008  fc800000  fc800008 <fc430000> fc620008  41606020  0c4e36ca  26100001  0214182a
Disabling lock debugging due to kernel taint
Kernel panic - not syncing: Fatal exception in interrupt

求达人解答。

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
2 [报告]
发表于 2015-01-08 16:01 |只看该作者
这个问题应该比较容易定位, 是空指针访问,

你用gdb反汇编下 process_backlog+0x94/0x108看是在哪一行触发的空指针访问,

然后把process_backlog的代码贴上来看看。

论坛徽章:
3
射手座
日期:2014-08-18 12:15:53戌狗
日期:2014-08-22 09:53:36寅虎
日期:2014-08-22 14:15:29
3 [报告]
发表于 2015-01-08 16:25 |只看该作者
大概推断的话, 应该是网卡驱动有bug导致的空指针访问,  
网卡驱动收到报文之后会把skb放到中断底半步也就是backlog里面慢速处理, 这里skb内存指向网卡硬件的内存,
因为底半步执行的时候是开中断的,网卡还能继续收包,但是后面收到的报文出错了, 网卡硬件把内存暴力清空了, 这就导致backlog里面放的skb 无效了, 但是backlog 不知道(不同的上下文)还在继续处理,结果就访问到空指针了。

我手上只有linux 3.15.5的代码, 3.15.5的代码已经不一样了, 3.15.5的skb不放在backlog里面处理, 用的是NAPI直接在网卡的接收中断里处理报文,应该没有这个问题。

论坛徽章:
0
4 [报告]
发表于 2015-01-08 16:33 |只看该作者
回复 3# gaojl0728
解释的太清楚了, 多谢多谢。

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP