PF_RING和DPDK接收报文如何添加时间戳

0.DPDK

77E02E3E-42A3-4014-A9F8-33E0093EE357.png

在DPDK里面在各种网卡驱动程序里面找到了一些关于添加时间戳的函数,不同的网卡驱动程序都调用了rte_timecounter_update函数和rte_ns_to_timespec函数,这个两个函数定义在dpdk-16.07/lib/librte_eal/common/include/rte_time.h中,大概的意思是要读取硬件的时钟减去上一次存在结构体里面的时钟得到的差去计算时间吧

读取当前硬件的时钟是用了一个xxx_read_systime_cyclecounter函数(xxx是不同驱动的名字,各自定义在自己的驱动文件中)


5A3DF97B-C618-4848-BFFA-05D0CAE330BF.png
25A5F05A-A530-4F15-8E99-C68647A7F0CC.png

这个截图是 drivers/net/ixgbe/ixgbe_ethdev.c <<ixgbe_timesync_read_rx_timestamp>>

2.PF_RING

CE8E06A9-F45B-4176-AC49-81CC848607BD.png

do_gettimeofday(&skb->stamp) 原形在/include/linux/time.h 中
net_timestamp 函数在/linux-2.6.32.5/net/core/dev.c

ktime_to_timeval 函数在 /linux-2.6.32.5/include/linux/ktime.h

ktime_to_ns函数在 /linux-2.6.32.5/include/linux/ktime.h

ktime_to_ns(skb_hwtstamps(skb)->hwtstamp)函数里面的skb_hwtstamps 在 /linux/skbuff.h

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容