TI中文支持网
TI专业的中文技术问题搜集分享网站

AM335x双网口通信丢包问题

你好,我们在调试AM335x的双网口的时候发现一个奇怪的问题,描述如下,请帮忙解答一下:

1.使用的SDK版本是ti-sdk-am335x-evm-05.06.00.00
2.配置了双网口CONFIG_TI_CPSW_DUAL_EMAC=y3.配置的是双RMII接口 writel(0xC5, AM33XX_CTRL_REGADDR(AM33XX_CONTROL_GMII_SEL_OFFSET));
4.网口pin接口都按原理图正确配置。

以下是终端网络信息
root@am335x-evm:~# ifconfig
eth0 Link encap:Ethernet HWaddr D0:39:72:10:E4:9C
inet addr:192.168.0.143 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:660 errors:0 dropped:31 overruns:0 frame:0
TX packets:22 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:103006 (100.5 KiB) TX bytes:1572 (1.5 KiB)

eth1 Link encap:Ethernet HWaddr 9E:E4:10:72:39:D0
inet addr:172.16.0.173 Bcast:172.16.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:576 errors:0 dropped:31 overruns:0 frame:0
TX packets:77 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:97350 (95.0 KiB) TX bytes:4760 (4.6 KiB)

当我用PC同时 ping AM3359的两个网口时,双网口都很正常。

192.168.0.143 的 Ping 统计信息:
数据包: 已发送 = 82,已接收 = 82,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 1ms,平均 = 0ms

172.16.0.173 的 Ping 统计信息:
数据包: 已发送 = 97,已接收 = 97,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 1ms,平均 = 0ms

但是一旦我程序往 172.16.0.23(该主机不在线) 发UDP数据包,1秒一次。
此时PC主机ping AM3359的172.16.0.173 开始丢包。172.16.0.173 的 Ping 统计信息:
数据包: 已发送 = 91,已接收 = 78,丢失 = 13 (14% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 1ms,平均 = 0ms
192段正常。
发UDP包频率越快 丢包越多。

另外:
如果172.16.0.23的主机在线 则不会出现丢包情况。
如果AM3359 一直ping一个存在的172网段的IP地址 也不会出现主机丢包情况。

Steven Liu1:

我先确认一点,在你目前的测试中,你的双网口一个是接的192段的,一个是接172段的:

在测试中,192端的,两种测试方法都正常不丢包。

但你如果往172段一个不在线主机(23)发包,同时往一个在线的主机(173)发包,这时候检测出来结果有丢包;

如果两者都在线,则检测结果不丢包。

而且随着往不在线主机(23)发包的频率越快,统计出来的丢包率越大。

这是不是说,那个ping检测的机制,是针对端口的?一个检测192段的网口,一个检测172段的网口。

在对172端检测时,不在线主机会丢包,导致了你出现了丢包率。如果按照这个计算方式,随着往不在线主机发包的频率增加,丢包率上升是正常现象。

你理解是怎样的呢?

leafbo ye:

回复 Steven Liu1:

两个网段都有这种情况。

如果我往192段不在线设备发UDP包,那么用PC ping AM3359 192段端口就会出现丢包,但是并不影响172段端口。

我的测试时 PC同时ping 192段和172段地址 来观察两个网段的丢包情况。 (PC也是双网段 ,其他双网段设备ping均正常)。

另外1S一次的UDP包 这种频率对网络来说是极其小的,我认为不可能也不应该影响网络数据丢包。

个人判断是不是TI 的CPSW的双网口驱动存在小BUG导致这种情况?

Steven Liu1:

回复 leafbo ye:

我理解一下你的测试方法:

1. 首先设置AM335x的两个网口IP,一个设置为192段,一个设置为172端。

2. 通过两个PC机,分别ping 192、172段,以PC机上面显示出来的丢包率,作为你评估是否出现丢包、丢包情况的一个标准。

3. 在AM335x端,通过写一个测试程序,发送UDP包到某一网段上(如192段),这时,就会出现你说的该网段(192段)的PC机端出现丢包情况。

是这样吗?

leafbo ye:

回复 Steven Liu1:

是这样的。

赞(0)
未经允许不得转载:TI中文支持网 » AM335x双网口通信丢包问题
分享到: 更多 (0)