Intel I211 Gigabit w/igb ドライバーで Precision Time Protocol (PTP) を無効にする方法はありますか?

Intel I211 Gigabit w/igb ドライバーで Precision Time Protocol (PTP) を無効にする方法はありますか?

私は ASUS Pro WS X570-ACE マザーボードを使用しています。AMD Ryzen 5700G、オンボード Intel I211 イーサネットを搭載し、igb ドライバー バージョン 5.11.0-27 を実行しています。このマザーボードには Realtek オンボード イーサネットも搭載されていますが、BIOS で無効になっています。OS は Linux Mint 20.2 で、カーネル 5.11.0-27-generic を実行しています。

OS が起動するたびに、'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

ethtool -T enp5s0アダプタ上で実行すると次のように表示されるため、これが Intel I211 ポートで発生していることはわかっています。

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)

これは /dev/ptp0 と /dev/pps0 を作成することPTP Hardware Clock: 0 を意味します。以下は /dev/ 内の関連デバイスのリストです。

/dev/port  /dev/ppp  /dev/pps0  /dev/pps1  /dev/psaux  /dev/ptmx  /dev/ptp0  /dev/ptp1  /dev/ptp2

この PTP が私にとって問題となる理由は、時間を設定するために GPS 受信機を使用しているためです。

オンボード COM/シリアル DB9 コネクタ経由で接続された GPS 受信機があり、シリアル経由でピン 1 に入力されるパルス/秒 (PPS) を使用して、コンピュータの時間をマイクロ秒の精度で設定するために使用しています。残りは GPSD と CHRONY が処理しますが、問題は、PTP が原因で、GPSD が /dev/pps0 ではなく /dev/pps1 に PPS デバイスを作成することです。GPSD は通常、PPS ソースが /dev/pps0 であると想定しています。コマンド ラインで /dev/pps1 を PPS ソースとして参照するように指定すると、GPSD は機能しますが、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をサポートするコードは2011年頃に追加されました。インテル® イーサネット コントローラー I211-ATハードウェアベースの高精度な時間同期をサポートします。これは、モジュール開発者が次のように考えているために有効になっています:(ソース

MAC に PTP 機能がある場合、ユーザーはそれを有効にしたいと考えるはずです。

簡潔に言うと、あなたの結論は正しいです。それでも、できることはいくつかあります。

  • モジュール開発者に連絡して、ユースケースを示します。一般的には必要と考えられており、デフォルトでオンになっている機能であっても、無効にする正当な理由があることを開発者に納得させます。
  • HC を削除してモジュールを再コンパイルします。
  • 代わりに Realtek NIC を使用してみてください。
  • /dev/pps0gpsdを次の/dev/ptp0ようにデバイスを無視するように設定してみてください。ドキュメンテーション可能であるはずです:

デバイスが切断され、使用できなくなったことをデーモンに通知するには、マイナス記号 ('-') に続けてデバイス名を送信し、その後に LF または CR-LF を送信します。したがって、検索リストから /dev/foo を削除するには、"-/dev/foo\n" を送信します。

下のファイルを変更することで、これも自動的に動作するはずです/etc/gpsd/device-hook

関連情報