1. Ethtool中的link状态
这里我们以igb网络为例,来说明ethtool中的link状态:
1.1 Net-tools中ethtool
首先从ethtool中, 发出一个ETHTOOL_GLINK的消息到kernel中:
1.2 Kernel中ethtool
net/core/dev_ioctl.c->dev_ethtool 系统ioctl的入口
这里可以看到,link状态取决于: netif_running && ethtool_ops->get_link
1.2.1 netif_running()
__LINK_STATE_START是怎么来的?,搜索代码可以找到_dev_open中有如下代码:
_dev_open则是在调用ifconfig up 的流程中调用的,所以 netif_running类似于管理状态的概念,
执行ifconfig up ,则dev-state->__LINK_STATE_START被标记,ifconfig down, dev-state->__LINK_STATE_START标记被清除
1.2.2 ethtool_ops->get_link
这里进入igb网卡的流程…