
我有一個 RTL8125B-CG NIC,根據我收集的信息他們的產品頁面,具有對 PTP 的硬體支援。但是,sudo ethtool -T
不偵測任何硬體時間戳功能。
我嘗試過使用該r8169
驅動程式和r8125
Realtek 的驅動程式(兩者都這個來自 Github和這個來自 Realtek 的下載頁面),但沒有成功。原始碼中的Makefile中好像有指示預設未啟用 PTP 支援的標誌,但是當我啟用此標誌時,我無法編譯(我收到中出現的錯誤這個問題)。
有人有任何經驗或知道我可以做什麼來啟用 PTP 支援嗎?
我正在運行 Ubuntu 20.04 和5.11.0-36-generic
核心。
答案1
請參閱 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
網卡的不同計算機,有時在一台計算機上可以工作,而在另一台計算機上則很少。我懷疑PTP功能還沒有經過Realtek的充分測試,儘管這只是我的猜測。