当执行 ethtool -i eth0 时,ethtool 调用ioctl,然后内核找到对应的 ethtool_ops 函数来执行。 igb 驱动程序在 igb_probe 中调用 igb_set_ethtool_ops 来注册特定的 ethtool 函操作,代码非常清晰。 static int igb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) { ... igb_set_eth...
找到对应statistics的注册函数get_ethtool_stats: 其作为net_device里的成员变量,因此作为任何版本的驱动程序,只需在对应结构里注册自己的函数即可。 这里我们以i40e为例,看看ethtool是如何获取数据的,先找到i40e注册的ethtool_ops,这里是i40e_ethtool_ops,而对应的get_ethtool_stats是i40e_get_ethtool_stats:...
最重要的结构体struct ethtool_ops,该结构体成员为用于显示或修改以太网卡配置的一系列函数指针,见下表中的第二列。网卡驱动负责实现(部分)这些函数,并将其封装入ethtool_ops结构体,为网络核心层提供统一的调用接口。因此,不同的网卡驱动会给应用层返回不同的信息。Ethtool命令选项、struct ethtool_ops成员函数、...
最重要的结构体struct ethtool_ops,该结构体成员为用于显示或修改以太网卡配置的一系列函数指针,见下表中的第二列。网卡驱动负责实现(部分)这些函数,并将其封装入ethtool_ops结构体,为网络核心层提供统一的调用接口。因此,不同的网卡驱动会给应用层返回不同的信息。Ethtool命令选项、struct ethtool_ops成员函数、...
在kernel/include/linux/ethtool.h 定义了结构体 ethtool_ops,这个结构体的所有成员都是函数指针类型,定义了 ethtool 可以实现的功能,该结构体成员变量较多,在这里就不列出代码清单;同时,在结构体 net_device 中也有成员变量 ethtool_ops 如清单 2 所示, ...
最重要的结构体struct ethtool_ops,该结构体成员为用于显示或修改以太网卡配置的一系列函数指针,见下表中的第二列。 网卡驱动负责实现(部分)这些函数,并将其封装入ethtool_ops结构体,为网络核心层提供统一的调用接口。因此,不同的网卡驱动会给应用层返回不同的信息。Ethtool命令选项、struct ethtool_ops成员函数、...
最重要的结构体struct ethtool_ops,该结构体成员为用于显示或修改以太网卡配置的一系列函数指针,见下表中的第二列。网卡驱动负责实现(部分)这些函数,并将其封装入ethtool_ops结构体,为网络核心层提供统一的调用接口。因此,不同的网卡驱动会给应用层返回不同的信息。Ethtool命令选项、struct ethtool_ops成员函数、...
ethtool担负着用户空间和具体网络设备驱动之间的交互,包括查询、设置网卡信息。相关声明在include/linux/ethtool.h文件中,核心是ethtool_ops类型的结构。 对于和设备一起工作的ethtool,必须放置一个指向ethtool_ops结构的指针在net_device结构中。 这些底层工具本身都比较复杂,且都和内核交互,单篇材料不能详述之,后续...
命令选项struct ethtool_ops成员函数Ethtool命令显示参数的来源(以网卡驱动BNX2为例) 无-sget_settingsget_wol get_msglevel get_link set_settings set_wol set_msglevel从网卡寄存器中获得网卡速度等信息,可配置。 -a -Aget_pauseparam set_pauseparam从网卡寄存器中获得Autonegotiate/RX/TX模块的状态:on oroff...
它使用了一种称为ethtool_ops的数据结构来定义与驱动程序交互的接口函数。这些接口函数包括获取网络接口状态信息的函数、设置网络接口参数的函数等。ethtool工具通过调用这些接口函数与驱动程序进行交互,从而完成对网络接口的配置和显示。 ethtool工具还支持一些附加的功能,例如统计网络接口的错误信息、显示接口的驱动程序...