Есть ли способ отключить протокол точного времени (PTP) на Intel I211 Gigabit с драйвером 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 <giometti@linux.it>
 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)

The 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 <giometti@linux.it>
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 году. 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.

Другие вопросы по тегам