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

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

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

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

 pps_core: LinuxPPS API ver. 1 registered
 pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
 pps pps0: new PPS source ptp0
 pps_ldisc: PPS line discipline registered

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

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

Time stamping parameters for enp5s0:
Capabilities:
    hardware-transmit     (SOF_TIMESTAMPING_TX_HARDWARE)
    software-transmit     (SOF_TIMESTAMPING_TX_SOFTWARE)
    hardware-receive      (SOF_TIMESTAMPING_RX_HARDWARE)
    software-receive      (SOF_TIMESTAMPING_RX_SOFTWARE)
    software-system-clock (SOF_TIMESTAMPING_SOFTWARE)
    hardware-raw-clock    (SOF_TIMESTAMPING_RAW_HARDWARE)
PTP Hardware Clock: 0
Hardware Transmit Timestamp Modes:
    off                   (HWTSTAMP_TX_OFF)
    on                    (HWTSTAMP_TX_ON)
Hardware Receive Filter Modes:
    none                  (HWTSTAMP_FILTER_NONE)
    all                   (HWTSTAMP_FILTER_ALL)

Это PTP Hardware Clock: 0 означает, что это создает /dev/ptp0 и, таким образом, /dev/pps0. Вот список соответствующих устройств в /dev/:

/dev/port  /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 ver. 1 registered
pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <[email protected]>
pps pps0: new PPS source ptp0
pps_ldisc: PPS line discipline registered
pps pps1: new PPS source serial0
pps pps1: source "/dev/ttyS0" added

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

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

решение1

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

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

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

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

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

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

Связанный контент