ethtool:set/unset 自动协商,RX/TX 暂停
ethtool: set/unset autonegation, RX/TX pause
我正在查看 ethtool
的来源,特别是在函数 do_spause()
中,其中自动协商、rx/tx 暂停可以是 enabled/disabled。我注意到起初它为 ETHTOOL_GPAUSEPARAM
命令发出 ioctl()
,即它获取当前设置,它们是相同的,它不会改变任何东西,否则它会发出 ioctl()
使用 ETHTOOL_SPAUSEPARAM
命令并设置新参数。
这是什么原因?这是优化还是避免 link 中断的方法?
ethtool_ops 是针对每种设备类型单独实施的。在设置一个已设置的值时假设所有 ioctl 都是良性的是鲁莽的。内核中的实现在这里:
https://elixir.bootlin.com/linux/v3.10.108/source/net/core/ethtool.c#L1003
我正在查看 ethtool
的来源,特别是在函数 do_spause()
中,其中自动协商、rx/tx 暂停可以是 enabled/disabled。我注意到起初它为 ETHTOOL_GPAUSEPARAM
命令发出 ioctl()
,即它获取当前设置,它们是相同的,它不会改变任何东西,否则它会发出 ioctl()
使用 ETHTOOL_SPAUSEPARAM
命令并设置新参数。
这是什么原因?这是优化还是避免 link 中断的方法?
ethtool_ops 是针对每种设备类型单独实施的。在设置一个已设置的值时假设所有 ioctl 都是良性的是鲁莽的。内核中的实现在这里:
https://elixir.bootlin.com/linux/v3.10.108/source/net/core/ethtool.c#L1003