Рейтинг:2

Есть ли способ отключить протокол точного времени (PTP) на Intel I211 Gigabit с драйвером igb?

флаг au

У меня есть материнская плата ASUS Pro WS X570-ACE с процессором AMD Ryzen 5700G, встроенным Ethernet-модулем Intel I211, драйвером igb ver. 5.11.0-27. Он также имеет встроенный Ethernet Realtek, но он отключен в BIOS. ОС — Linux Mint 20.2 с ядром 5.11.0-27-generic.

Всякий раз, когда ОС загружается, в выводе dmesg отображается следующее:

 pps_core: LinuxPPS API вер. 1 зарегистрирован
 pps_core: Программное обеспечение вер. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
 pps pps0: новый источник PPS ptp0
 pps_ldisc: зарегистрирована дисциплина линии PPS

И появляются 2 устройства: /dev/pps0 и /dev/ptp0

Я знаю, что это делает порт Intel I211, потому что если я запускаю ethtool -T enp5s0 на адаптере написано:

Параметры отметки времени для enp5s0:
Возможности:
    аппаратная передача (SOF_TIMESTAMPING_TX_HARDWARE)
    программная передача (SOF_TIMESTAMPING_TX_SOFTWARE)
    аппаратное получение (SOF_TIMESTAMPING_RX_HARDWARE)
    программное обеспечение (SOF_TIMESTAMPING_RX_SOFTWARE)
    программно-системные часы (SOF_TIMESTAMPING_SOFTWARE)
    аппаратные необработанные часы (SOF_TIMESTAMPING_RAW_HARDWARE)
Аппаратные часы PTP: 0
Аппаратные режимы временной метки передачи:
    выключено (HWTSTAMP_TX_OFF)
    включено (HWTSTAMP_TX_ON)
Режимы аппаратного фильтра приема:
    нет (HWTSTAMP_FILTER_NONE)
    все (HWTSTAMP_FILTER_ALL)

Аппаратные часы PTP: 0 означает, что это создает /dev/ptp0 и, следовательно, /dev/pps0. Вот список соответствующих устройств в /dev/:

/dev/порт /dev/ppp /dev/pps0 /dev/pps1 /dev/psaux /dev/ptmx /dev/ptp0 /dev/ptp1 /dev/ptp2

Причина, по которой этот PTP является проблемой для меня, заключается в том, что я использую GPS-приемник для установки времени.

У меня есть GPS-приемник, подключенный через встроенный разъем COM/Serial DB9, который я использую для установки времени на компьютере с микросекундной точностью, используя импульс в секунду (PPS), поступающий на контакт 1 по последовательному порту. GPSD и CHRONY позаботятся обо всем остальном... но проблема в том, что GPSD создает свое устройство PPS в /dev/pps1, а не в /dev/pps0 из-за PTP. GPSD обычно ожидает, что источником PPS будет /dev/pps0. GPSD работает, если я укажу в командной строке, чтобы ссылаться на /dev/pps1 как на источник PPS... но для блокировки и синхронизации требуется еще несколько минут по сравнению с компьютером, на котором вообще нет PTP...

pps_core: LinuxPPS API вер. 1 зарегистрирован
pps_core: Версия программного обеспечения. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
pps pps0: новый источник PPS ptp0
pps_ldisc: зарегистрирована дисциплина линии PPS
pps pps1: новый исходный код PPS serial0
pps pps1: добавлен источник "/dev/ttyS0"

Я просмотрел руководство Ethtool и руководство по сборке драйвера Intel IGB, но нет параметра, который можно установить для отключения HARDWARE_TIMESTAMPS. В Ethtool есть только переключатель -T, который показывает возможность метки времени... но нет реальных параметров, которые можно установить с помощью ethtool -T/-t.

Вопрос: Есть ли способ полностью отключить эту систему PTP?

флаг in
разве вы не можете просто пересобрать ядро ​​с его отключением или, если это модуль, внести этот модуль в черный список? возможно, добавить вывод из `lsmod`
флаг il
Похоже, это, возможно, больше проблема gpsd, чем что-либо еще. Почему gpsd работает иначе, если вы укажете устройство не по умолчанию? Кроме того, еще одним возможным решением является использование правил udev для переименования устройств при загрузке.
fraxinus avatar
флаг ng
Я бы использовал другой подход: использовать честный, простой сетевой интерфейс Realtek и отказаться от интерфейса Intel.
Рейтинг:3
флаг in

Код для поддержки HC на некоторых картах Intel был добавлен примерно в 2011 году. Ethernet-контроллер Intel® I211-AT поддерживает аппаратную точную синхронизацию времени. Он включен, потому что разработчики модуля думают об этом следующим образом: (источник)

Если у MAC есть функции PTP, то пользователи наверняка захотят, чтобы они были включены.

Короче: Ваш вывод правильный. Тем не менее, вы можете сделать несколько вещей:

  • Свяжитесь с разработчиками модуля и покажите свой вариант использования. Убедите их, что есть веские причины для отключения функции, даже если она обычно считается необходимой и включена по умолчанию.
  • Перекомпилируйте модуль с удаленным HC.
  • Вместо этого попробуйте использовать сетевую карту Realtek.
  • Попробуйте настроить gpsd на игнорирование устройств как /dev/pps0 или же /dev/ptp0 - согласно документация должно быть возможно:

Сказать демон о том, что устройство было отключено и больше не доступно, отправьте знак минус ('-'), за которым следует имя устройства, а затем по LF или CR-LF. Таким образом, чтобы удалить /dev/foo из списка поиска, отправьте "-/dev/foo\n".

Это также должно работать автоматически, путем изменения файлов в /etc/gpsd/device-hook.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.