1,板卡ping电脑,能通。
2,电脑ping板卡,不通。或者是偶尔憋半天,通几个包,延迟都是70000ms这种几十秒的延迟时间。
但是,当1和2同时进行的时候,两边都是通的。
板卡跑linux4.19
电脑是ubuntu
一根网线直连的。
请问是什么原因,应该从哪里入手?
MAC是stmmac
PHY是一个国产的
离线
防火墙?
离线
防火墙?
我用的电脑是ubuntu的 ,iptables -L 查看过了,没有添加规则。
离线
是不是MAC地址冲突了,板卡的MAC和局域网内另一设备的MAC一样
离线
用wireshark抓个包看看
离线
用wireshark抓个包看看
板卡上移植tcpdump不太好移植,,,
我只在电脑上进行了抓包,这次是在windows上边抓的。
把图片拖到另外一个窗口,能看到清晰的图。
这个是电脑ping的过程
最近编辑记录 WM_CH (2021-12-08 20:31:48)
离线
然后一步一步往上查呢,
可以先用 iptable 的LOG target 看看报文收发的时间是否正确, 如果正确就可以集中看网卡驱动部分
或者换个线 or 加个switch试试
离线
然后一步一步往上查呢,
可以先用 iptable 的LOG target 看看报文收发的时间是否正确, 如果正确就可以集中看网卡驱动部分或者换个线 or 加个switch试试
我的板卡,移植iptables有点困难,,,
现在主要怀疑网卡驱动部分,老哥能指点一下这部分的吗
linux网卡驱动 是stmmac的那种的gmac。
离线
电脑和设备是直连的吗?
离线
电脑和设备是直连的吗?
是直连的
离线
@WM_CH
是我会这样处理:
1. 排除环境(网卡, 网线)问题
2. 排除kernel 协议栈的问题 (出问题的概率比较小, 有工具的话几个命令就可以排除)
啥工具都没有的话, 就加printk
ip or arp 收发时加个printk , 打印下包的内容, 看看处理时间的延迟是否有误.
3. 确定不是协议栈的问题, 就在驱动里面加printk, 找出问题时发送报文为什么会出现这种burst的现象
网卡驱动的架构网上文章太多了, 慢慢加printk, 多编译几次kernel, 真相总会浮出水面
离线
@真的是很烦
我现在调试发现GMAC的寄存器中,
host receiver descriptor address pointer 是随着电脑发送ping包,在不停变化的。
这个寄存器变化,意味着DMA是在不停的做收包操作的。(因为手册里面写道:这个寄存器在DMA有操作时更新)
既然DMA有操作,但gmac的网卡驱动中 stmmac_interrupt函数总是得不到执行,
其实原来的同事已经调过了,说是CPU的bug...
但是我想弄明白一点。
离线
解决了吗?
离线
是不是PHY不能很好的识别直连模式?
可以尝试下硬件处理,先用交叉网线试试...就是将网线其中一头1和3调换,2和6调换
离线
我之前遇到过一个这样的问题,是phy与控制芯片的时钟线冲突导致,收发的情况,有时可以,有时又没有
离线