This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

am335x的VLAN问题

Other Parts Discussed in Thread: AM3354

目前我们发现一个设备A的网络跟AM335X(设备B)的网络PING不通,直连情况下,但是两者跟别的设备包括电脑都是通的。

1、通过在双方设备上用TCPdump抓包,发现在A设备的ARP包发给B设备,B获取到了A的MAC地址,B设备回复一个ARP包,告知A它的MAC地址,但是A收到这个ARP包后无法获取到B的MAC地址,B上抓包看到B回复A的包看起来很正常,但是在A上抓包看到B发给A的ARP包里面多了一个802.1Q字段,也就是所谓的VLAN。

我们在内核配置里面将802.1Q这个配置取消掉了,重新编译出来的内核,也还是一样。

不知道是否还需要其他地方需要更改?

  • 看了你的描述,我建议先搞清楚一点,现在AM335x和外部的设备通讯,能拿到外部设备的地址,但是外部设备拿不到335X的mac地址,这个原因是因为你的外部设备A本身就会有安全机制之类的,过滤、阻塞了335的数据包,还是因为数据包的格式不能被识别导致失败。因为两者和电脑都能正常通讯,所以从通讯功能上说应该都是好的。

    另外,还可以做一个小测试,就是把335和外部设备都接在交换机上,可以正常访问彼此吗?

  • 我们测试过了,将ETH0接入一个交换机,对接的设备A也接入交换机,彼此也是不通,跟直连的现象是一致的,抓包看也是一样。另外我们今天在测试中发现,TI处于UBOOT下是可以与设备A通的,在A上抓ping包可以看到里面没有802.1Q部分。而TI进入了内核下就抓包就有这部分的内容如图:好像图片无法上传,放在附件中

    于是我们尝试在DTS中取消了dual_mac模式后,内核起来只有ETH0可以使用,这个时候就可以与A设备通信了,同时抓包看跟3354处于UBOOT下的一致。

    我看DATASHEET中描述如果开启了dual_mac模式的话,3354它是会去配置VLAN的一些东西,包括什么VID之类的,那是否是因为这部分的东西导致的?实际上我们的应用就是两个MAC出来连接两个PHY,两个RJ45。

  • 后来我再试了将两个设备都接入路由器,然后两个设备也是在通网段,这样就可以通了。那么接入交换机或者直连的话,是不是因为两者的VLAN的归属不一致导致的,因为我查了下说是路由才能实现不同的VLAN段之间的通信

  • hi, Steven

        我们现在在VLAN这个问题上卡住了,我们希望我们就是能够AM3354发出的网络包里面不带VLAN字段,但是我们修改内核中取消了支持802.1Q,抓到的包还是有VLAN字段。请教下如何更改?

  • 根据你的描述,也就是说AM335x工作在单网口是工作正常的,而工作在dual mac下是不能ping通的。去掉vlan,不知道有没有参考过:

    http://processors.wiki.ti.com/index.php/Sitara_Linux_Dual_Emac_Mode#Removing_VLAN_Headers

  • 这部分的文档我看了一下,结合3354的寄存器手册,还是没有整明白该如何去设置哪些寄存器?

  • 请问ti的fae,如何去设置那些寄存器,linux代码里面并不能找到这几个变量?