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

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

我有一个 RTL8125B-CG NIC,据我所知他们的产品页面,具有对 PTP 的硬件支持。但是,sudo ethtool -T未检测到任何硬件时间戳功能。

我尝试过使用r8169驱动程序和r8125Realtek 的驱动程序(两者这个来自 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_irqsavespin_lock_irqrestore例程都无法编译。有两种方法可以解决此问题:

  1. 注释掉PTP 文件中的所有spin_lock_irqsave和例程,或者spin_lock_irqrestore
  2. spinlock_t lock在 中添加回该成员struct rtl8125_private

后者可能更安全,因为我们不知道 IRQ 对驱动程序的功能是否至关重要。话虽如此,我确实尝试了这两种解决方案,并且都使驱动程序编译并报告了 PTP HW 功能,所以我不知道哪种方法最好。

但是,我仍然认为驱动程序存在很多错误,因为我仍然无法在从属模式下使用硬件时间戳,而且我很难获得可靠的结果。我经常遇到从驱动程序获取时间戳时超时的问题。我有两台带网卡的不同计算机ptp4l,它有时在一台计算机上工作,而在另一台计算机上很少工作。我怀疑 Realtek 尚未对 PTP 功能进行充分测试,尽管这只是我的猜测。linuxptpr8125

相关内容