linux下查看网卡phy,Linux下网卡phy状态检测与控制

最近在一个项目中,集成一个交换机芯片的时候,遇到一些麻烦,发现交换机的性能总是上

不去,100M的交换机,实际交换能力只有10M。跟做硬件的同事一起,花了几周时间调试,

才找到问题。原来是接到交换机芯片上的几个子系统,用的Micrel 8041PHY芯片,默认关闭

了硬件流控,导致交换机无法通过流控来控制网络数据交换,结果使得其性能下降。而交换

机每个端口的PHY与子系统的PHY都使用的Auto Negotiation来协商链接状态,子系统默认不

支持流控,交换机也关闭了流控。

解决方法实际上很简单,就是在子系统端打开PHY的流控,其实也就是寄存器的一个位而已,

却花了我们几周时间。究其原因,都是由于大部分PHY芯片默认都打开流控,所以导致我们

一开始没怀疑到这上面,而且也没有引出交换机的控制口查看其状态。

子系统是跑的嵌入式Linux系统,所以在这几周的调试过程中,着重查看了Linux Kernel中

PHY的驱动,以及相关的一些系统调用。有些心得,记录下来。

Linux系统提供了两类ioctl系统调用SIOCETHTOOL和SIOCXMIIXXX,用于控制或者获取网卡

PHY的状态。这两类系统调用的实现取决于PHY驱动中对应ioctl的实现,一般的PHY驱动都

会实现至少其中的一类。下面以获取网卡的Link状态来说明这两类系统调用的使用。

0. Create socket handler

由于这两类调用都要使用socket handler,我们先建立一个socket ha

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值