Список поддерживаемых устройств и драйверов для ethtool –cable-test

Вопрос или проблема

Я хочу использовать ethtool для тестирования сетевого кабеля с помощью ethtool --cable-test и ethtool --cable-test-tdr.
Я пытался сделать это (как root) на своем компьютере (внутренний сетевой адаптер), двух адаптерах USB-to-Ethernet и внутреннем адаптере Raspberry Pi4.
Во всех случаях я получил Unsupported Operation. Похоже, что только конкретные устройства и драйверы поддерживают эту функцию.
Есть ли какой-либо список, который показывает, какие именно? Я не смог найти такой сам.
На моем компьютере установлена Arch Linux, так что у меня самый новый ядро Linux (6.6.6-arch1-1).

Будет здорово, если кто-то из вас укажет мне правильное направление, как это сделать.

Я сделал следующее:

Проверил исходный код ethtool, чтобы увидеть, какие сообщения netlink он использует при запросе результатов тестирования кабеля (например, nl_cable_test и nl_cable_test_tdr). Затем я проследил их в дерево исходных кодов драйвера ядра, и похоже, что следующие драйверы Ethernet PHY поддерживают базовое тестирование кабеля:

drivers/net/phy/at803x.c
drivers/net/phy/bcm-phy-lib.h
drivers/net/phy/nxp-c45-tja11xx.c
drivers/net/phy/nxp-tja11xx.c
drivers/net/phy/adin.c
drivers/net/phy/micrel.c
drivers/net/phy/bcm-phy-lib.c
drivers/net/phy/phy_device.c
drivers/net/phy/marvell.c
drivers/net/phy/microchip_t1.c
drivers/net/phy/bcm54140.c

… для полного списка поддерживаемых чипов NIC вам нужно будет обратиться к этим исходным файлам и другим частям кода, чтобы увидеть, к какому оборудованию NIC это относится.

Единственным, который поддерживает тестирование TDR (на Linux 6.7.0), был драйвер Marvell PHY. Другие комментарии в другом месте в исходном коде (например, заголовочные файлы IC NIC) предполагают, что различные другие чипы также имеют какую-либо функциональность аппаратного TDR (включая некоторое древнее оборудование), но похоже, что они остаются не реализованными.

Поддержка тестирования TDR Marvell, похоже, была добавлена Андрю Ланном, и есть несколько видео на YouTube, в которых он представляет эту работу.

Обновление: Тестирование TDR работает на Huawei AP5030DN с патчем в стадии разработки https://github.com/openwrt/openwrt/issues/17077 – я обновлю этот ответ со списком известных работающих устройств, когда эта работа будет завершена.

Ответ или решение

Для успешного использования команд ethtool --cable-test и ethtool --cable-test-tdr необходимо учитывать, что не все сетевые устройства и драйверы поддерживают данную функциональность. Ваша проблема заключается в том, что при попытке выполнения этих команд на различных сетевых адаптерах возникает сообщение об ошибке "Unsupported Operation". Это значит, что ваше оборудование или драйверы не способны выполнять тестирование кабеля.

Поддерживаемые устройства и драйверы для ethtool --cable-test

Исходный код утилиты ethtool показывает, что поддержка функций тестирования кабеля реализована только на определенных драйверах Ethernet PHY. На данный момент, под Linux с ядром 6.6.6 и выше, для операций тестирования кабеля доступны следующие драйверы:

  1. at803x.c – Драйвер для PHY на основе чипа Atheros.
  2. bcm-phy-lib.h – Библиотека для драйверов на основе Broadcom PHY.
  3. nxp-c45-tja11xx.c – Драйвер для PHY-наборов от NXP.
  4. nxp-tja11xx.c – Еще один драйвер от NXP.
  5. adin.c – Драйвер для Adin Technology PHY.
  6. micrel.c – Драйвер для PHY на основе Micrel.
  7. bcm54140.c – Драйвер для Broadcom BCM54140.
  8. marvell.c – Драйвер, поддерживающий тестирование TDR (Time Domain Reflectometry).
  9. microchip_t1.c – Драйвер для Microchip PHY.

Поддержка TDR-тестирования

На текущий момент поддержка TDR-тестирования реализована только в драйвере Marvell. Это означает, что если вы хотите использовать --cable-test-tdr, вам необходимо удостовериться, что ваше устройство использует данный драйвер.

Кроме того, в источник кода также отмечается поддержка TDR-тестирования для оборудования Huawei AP5030DN, но для его работы требуется использование патча, находящегося в стадии разработки. Работы над поддержкой TDR также затрагивают и другие чипы, но пока не все из них имеют реализованную функциональность.

Как проверить поддерживаемость

Если вы хотите проверить, поддерживает ли ваш сетевой адаптер данную функциональность, выполните следующие шаги:

  1. Убедитесь, что у вас установлен ethtool, и вы используете последнюю версию, совместимую с вашим ядром.
  2. Используйте команду ethtool -i <имя_интерфейса>, чтобы получить информацию о драйвере вашего сетевого устройства.
  3. Проверьте, принадлежит ли ваш драйвер к одному из перечисленных выше.
  4. Выполните команду ethtool --cable-test <имя_интерфейса>, чтобы произвести тест. Если появляется ошибка "Unsupported Operation", то оборудование, вероятно, не поддерживает данную функцию.

Заключение

Изучение поддерживаемых устройств и драйверов для функций ethtool --cable-test и ethtool --cable-test-tdr позволяет вам точно определить, какие адаптеры будут работать. Для полноты картины следует проверять исходный код драйверов и следить за обновлениями, так как поддержка может расширяться с выходом новых версий ядра и драйверов. Если у вас возникнут дополнительные вопросы или пожелания, буду рад помочь вам более подробно.

Оцените материал
Добавить комментарий

Капча загружается...