Ubuntu 20.04 中對 RTL8125B-CG NIC 的 PTP 支持
我有一個 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_irqsave
和spin_lock_irqrestore
常式都不會編譯。有兩種方法可以解決此問題:
- 註釋掉PTP 文件中的所有
spin_lock_irqsave
和常式,或spin_lock_irqrestore
spinlock_t lock
將成員添加回struct rtl8125_private
.後者可能更安全,因為我們不知道 IRQ 是否對驅動程序的功能至關重要。話雖如此,我確實嘗試了這兩種解決方案,並且都使驅動程序編譯並報告了 PTP 硬體功能,所以我不知道哪個最好。
但是,我仍然認為驅動程序有很多錯誤,因為我仍然不能使用硬體時間戳是從屬模式,而且我很難獲得可靠的結果。我經常遇到嘗試從驅動程序獲取時間戳的超時
ptp4l
問題。linuxptp
我有兩台帶r8125
NIC 的不同電腦,它有時在一台電腦上工作,而很少在另一台電腦上工作。我懷疑 PTP 功能尚未經過 Realtek 的良好測試,儘管這只是我的猜測。