![Ubuntu 20.04 中对 RTL8125B-CG NIC 的 PTP 支持](https://linux22.com/image/770842/Ubuntu%2020.04%20%E4%B8%AD%E5%AF%B9%20RTL8125B-CG%20NIC%20%E7%9A%84%20PTP%20%E6%94%AF%E6%8C%81.png)
我有一个 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 HW 功能,所以我不知道哪种方法最好。
但是,我仍然认为驱动程序存在很多错误,因为我仍然无法在从属模式下使用硬件时间戳,而且我很难获得可靠的结果。我经常遇到从驱动程序获取时间戳时超时的问题。我有两台带网卡的不同计算机ptp4l
,它有时在一台计算机上工作,而在另一台计算机上很少工作。我怀疑 Realtek 尚未对 PTP 功能进行充分测试,尽管这只是我的猜测。linuxptp
r8125