ethtool: установка / снятие автонегации, пауза RX / TX - PullRequest
0 голосов
/ 20 июня 2020

Я смотрел на источники ethtool, особенно на функцию do_spause(), где можно включить / отключить автосогласование, паузу rx / tx. Я заметил, что сначала он выдает ioctl() для команды ETHTOOL_GPAUSEPARAM, т.е. он извлекает текущие настройки, и они такие же, он ничего не меняет, иначе он выдаст ioctl() с командой ETHTOOL_SPAUSEPARAM и установить новые параметры.

В чем причина? Это оптимизация или способ избежать разрыва связи?

1 Ответ

1 голос
/ 20 июня 2020

ethtool_ops реализуются отдельно для каждого типа устройства. Было бы безрассудно предполагать, что все ioctl безопасны при установке уже установленного значения. Реализация в ядре находится здесь:

https://elixir.bootlin.com/linux/v3.10.108/source/net/core/ethtool.c#L1003

...