代码改变世界

AR934X built-in switch链路检测问题及处理方法

2018-01-13 13:46  Gierwu  阅读(810)  评论(0编辑  收藏  举报

1 问题

  在使用QSDK平台配合QCA9531方案时,碰到过2个实在无解的问题,其一:将有线口连接到其它傻瓜交换机上,然后通过无线或另一个有线口登录的设备上,执行ifconfig ethx down,但不拔下那根与交换机相连的网线,此时,就会发现,交换机下的其它设备,都不能通信;其二:在部分硬件平台上,即使硬件遵循Demo方案,但有线口热插拔有问题,具体表现为PC机端显示未连接,而设备端利用ip link指令检查时提示链路未连接;设备端重启接口无法恢复,必须重启设备。而这2个问题在LSDK固件中却均不存在。

2 解法方法

  开始怀疑是硬件造成的,所以不断调试了硬件,但毫无进展。针对第1个问题,因为当时主要还是以LSDK开发为主,灌了LSDK软件后,问题不再复现,所以就推荐客户选择LSDK平台作为基础平台开发,可客户没有LSDK且不愿意,只好给切换到LEDE平台,在该平台上,问题1不会重现。

  后来不断接到其它客户反应,有线口不好用,但助其调整硬件后,问题得到解决;直到后来有客户发现无论怎样调整硬件,问题2均存在,并且同样地,灌了LSDK固件后,问题不再重现。

  这时就能确定,QSDK平台上,针对AR934X built-in switch,应该是存在问题的。LSDK与QSDK针对此硬件(Phy)的处理,分别在athrs27_phy.c和ag71xx_ar7240.c实现,简单地说,后者的实现非常简单明了,将前者的reset函数中的初始化语句,别忘了链路中断使能配置语句,一股脑拷贝到后者的reset函数中,问题2就不再重现。

3 其它

       感谢你的坚持,鞭策我来解决此类问题。

       同时,谨献给所有如我一样芯片方支持非常有限工程师,希望能帮到你。