我正在查看ethtool的源代码,特别是在do_spause()函数中,其中可以启用/禁用自动协商、rx/tx暂停。我注意到,一开始它为ETHTOOL_GPAUSEPARAM命令发出ioctl(),即它获取当前的设置,它们是相同的,它不会改变任何东西,否则它将发出带有ETHTOOL_SPAUSEPARAM命令的ioctl()并设置新的参数。
这是什么原因呢?这是优化,还是避免链路中断的方法?
发布于 2020-06-20 11:02:12
对于每种设备类型,分别实施ethtool_ops。在设置已经设置的值时,假设所有的ioctls都是良性的,这是不计后果的。内核中的实现如下:
https://elixir.bootlin.com/linux/v3.10.108/source/net/core/ethtool.c#L1003
https://stackoverflow.com/questions/62478697
复制相似问题