Drivers

Ubuntu 20.04 中對 RTL8125B-CG NIC 的 PTP 支持

  • October 13, 2021

我有一個 RTL8125B-CG NIC,根據我從他們的產品頁面收集到的資訊,它具有 PTP 的硬體支持。但是,sudo ethtool -T不會檢測到任何硬體時間戳功能。

我已經嘗試過使用r8169驅動程序和r8125來自 Realtek 的驅動程序(這個來自 Github這個來自 Realtek 的下載頁面),但沒有成功。在原始碼的 Makefile 中,似乎有一個標誌表明預設情況下未啟用 PTP 支持,但是當我啟用此標誌時,我無法編譯(我得到了這個問題中出現的錯誤)。

任何人都有任何經驗或知道我可以做些什麼來啟用 PTP 支持?

我正在執行 Ubuntu 20.04 和5.11.0-36-generic核心。

請參閱 Github 上的問題以獲取答案:https ://github.com/awesometic/realtek-r8125-dkms/issues/9

簡而言之,編譯的問題在於,在最新版本的驅動程序 (9.006.04) 中,Realtek 已從 中刪除了spinlock_t lock成員變數struct rtl8125_private,但並未相應地更新 PTP 文件。因此,所有的spin_lock_irqsavespin_lock_irqrestore常式都不會編譯。有兩種方法可以解決此問題:

  1. 註釋掉PTP 文件中的所有spin_lock_irqsave和常式,或spin_lock_irqrestore
  2. spinlock_t lock將成員添加回struct rtl8125_private.

後者可能更安全,因為我們不知道 IRQ 是否對驅動程序的功能至關重要。話雖如此,我確實嘗試了這兩種解決方案,並且都使驅動程序編譯並報告了 PTP 硬體功能,所以我不知道哪個最好。

但是,我仍然認為驅動程序有很多錯誤,因為我仍然不能使用硬體時間戳是從屬模式,而且我很難獲得可靠的結果。我經常遇到嘗試從驅動程序獲取時間戳的超時ptp4l問題。linuxptp我有兩台帶r8125NIC 的不同電腦,它有時在一台電腦上工作,而很少在另一台電腦上工作。我懷疑 PTP 功能尚未經過 Realtek 的良好測試,儘管這只是我的猜測。

引用自:https://serverfault.com/questions/1078760