Ubuntu 20.04 の RTL8125B-CG NIC の PTP サポート

Ubuntu 20.04 の RTL8125B-CG NIC の PTP サポート

私はRTL8125B-CG NICを持っていますが、製品ページは、PTP のハードウェア サポートを備えています。ただし、sudo ethtool -THW タイムスタンプ機能は検出されません。

私はドライバr8169r8125Realtekのドライバ(両方ともGithubからのものそしてこれはRealtekのダウンロードページから)を試したが、成功しなかった。ソースコードのMakefileには、PTPサポートがデフォルトで有効になっていないことを示すフラグしかし、このフラグを有効にするとコンパイルできません(この問題)。

PTP サポートを有効にするために、経験のある方や、どうすればいいか知っている方はいらっしゃいますか?

Ubuntu 20.04 と5.11.0-36-genericカーネルを実行しています。

答え1

答えについては、Github の問題を参照してください。参考:

簡単に言うと、コンパイルの問題は、最新バージョンのドライバー (9.006.04) で Realtek がspinlock_t lockのメンバー変数を削除したstruct rtl8125_privateが、それに応じて PTP ファイルを更新しなかったことです。したがって、すべてのspin_lock_irqsaveおよびspin_lock_irqrestoreルーチンはコンパイルされません。これを修正するには、次の 2 つの方法があります。

  1. PTPファイル内のすべてのルーチンをコメントアウトするspin_lock_irqsaveか、spin_lock_irqrestore
  2. spinlock_t lockにメンバーを戻しますstruct rtl8125_private

IRQ がドライバーの機能にとって不可欠かどうかは不明なので、後者の方がおそらく安全です。とはいえ、私は両方のソリューションを試しましたが、どちらもドライバーをコンパイルして PTP HW 機能を報告したので、どちらが最適かはわかりません。

しかし、HW タイムスタンプをスレーブ モードで使用できず、信頼できる結果を得るのに苦労しているため、ドライバーにはまだかなりバグがあると思います。ドライバーからタイムスタンプを取得しようとすると、ptp4lタイムアウトになるという問題によく遭遇します。NIC を備えた 2 台のコンピューターがありますが、1 台のコンピューターではときどき動作しますが、もう 1 台ではほとんど動作しません。これは私の推測に過ぎませんが、PTP 機能は Realtek によって十分にテストされていないのではないかと思います。linuxptpr8125

関連情報