查看Linux内核源代码,我发现负责将包含数据包时间戳的消息放入错误队列的函数为
skb_tx_timestamp。该功能应该由NIC驱动
e1000程序调用,但不幸的是,该驱动程序没有调用它(硬件时间戳记也有类似的功能,但这显然取决于NIC驱动程序是否支持)。
根据去年9月的NetDev讨论,“没有驱动程序调用skb_tx_timestamp()”和“您需要调整NIC驱动程序以使用此TX时间戳记”。添加
skb_tx_timestamp对
e1000_xmit_frameon
的调用之后
e1000_main.c,我能够(通过UDP套接字)获取传出数据包的时间戳。但是,我无法获得RAW套接字上传出数据包的时间戳(我仍然得到
EAGAIN)。



