Кодирование для тестирования Ethernet PHY Loopback

Мне нужно написать тест обратной петли Ethernet PHY в Linux. Я никогда не делал этого раньше и понятия не имел, с чего начать. После некоторого исследования я придумал план теста, и мне интересно, может ли кто-нибудь помочь мне проверить его и дать мне несколько советов по моим вопросам.

Это настройка внешнего шлейфа. Он соединяет контакты TX +/- с RX +/- для каждого внутреннего физического уровня на микросхеме коммутатора Ethernet.

Таким образом, петлевой путь к пакету высокого уровня выглядит следующим образом:

CPU-> PHY0 (чип) -> Внутренний PHY коммутатора Ethernet (чип )-> PHY0 (чип) -> CPU

Для этого теста я планирую

  1. настроить внутренние PHY на коммутаторе Ethernet с определенными MAC-адресами,
  2. упакуйте тестовый пакет Ethernet, используя MAC-адрес ЦП в качестве адреса источника и MAC-адрес, настроенный на шаге 1. в качестве адреса назначения,
  3. отправить и дождаться получения тестового пакета,
  4. сравнить образец отправленных и полученных данных.

Какие-либо предложения? Кроме того, мне интересно, есть ли в Linux функции, которые я могу использовать для генерации пакетов для шага 2 и отправки пакетов для шага 3.

Большое тебе спасибо.


person user903151    schedule 09.11.2011    source источник
comment
какой язык вы хотите использовать для этого теста?   -  person This    schedule 13.12.2011
comment
Привет, Вы в конце концов сделали тест loopback на Linux или в загрузчике? Спасибо   -  person ransh    schedule 16.08.2015
comment
Ух ты, моя надежда так поздно. Да, я заставляю его работать в загрузчике. Ответ Тима пришел слишком поздно, но я нашел похожий подход в другом месте. Спасибо.   -  person user903151    schedule 15.07.2019


Ответы (1)


Большинство Phys можно переключить в тестовый режим. Мы использовали загрузчик, чтобы писать прямо в Phy и переключаться в режим тестирования.

Также существует ioctl, взятый из документации / сетей / phy.txt для удобства функций Ethtool.

int phy_mii_ioctl (struct phy_device * phydev, struct mii_ioctl_data * mii_data, int cmd);

Файл MII ioctl. Обратите внимание, что эта функция полностью испортит конечный автомат, если вы запишете регистры, такие как BMCR, BMSR, ADVERTISE и т. Д. Лучше всего использовать это только для записи нестандартных регистров и не запускать повторное согласование.

person Tim Sander    schedule 17.01.2012
comment
Спасибо, Тим. Я не видел твоего ответа до сих пор. Да, ваш ответ должен работать для внутреннего теста обратной петли. Однако для теста внешней обратной петли (с разъемом внешней петли) нам не нужно переводить PHY в тестовый режим. Просто установите полнодуплексный режим и автосогласование и используйте загрузчик phy_mii API для отправки и получения данных. - person user903151; 15.07.2019