c-AF_XDP:"SO_XDP"不支持设置"SO_TIMESTAMP":协议不



为什么AF_XDP套接字不支持设置SO_TIMESTAMP?我的驱动程序(mlnx 5.0(的用户手册指出

传入数据包在PCI取决于PCI缓冲器中的拥塞。

据我所知,before distributed on the PCI意味着还没有涉及Linux内核,对吧?

我试着这样设置:

int timestamp = SOF_TIMESTAMPING_RX_HARDWARE;
if(setsockopt(xsk_socket__fd(xsk_socket->xsk), SOL_XDP, SO_TIMESTAMP, (int*)&timestamp, sizeof(int)) < 0) {
fprintf(stderr, "Failed to set `SO_TIMESTAMP`: %sn", strerror(errno));
return;
}

获得:

设置SO_TIMESTAMP失败:协议不可用

我从xsk.c复制了SO_XDP的定义(https://github.com/libbpf/libbpf/blob/master/src/xsk.c):

#ifndef SOL_XDP
#define SOL_XDP 283
#endif

我不明白,为什么它不被支持。。。

没有任何技术原因可以解释为什么不实现它。

事实上,它看起来像是在xdp开发团队的待办事项列表中。

从这里引用:

重要的中期任务

来自硬件的元数据

有各种硬件元数据项可供XDP程序访问,以减少eBPF中需要进行的处理量。其中包括:

  • 校验和
  • 哈希值
  • 流量指示器
  • 更高级别的协议标头偏移
  • 时间戳

看起来这是自2019年6月以来的待办事项,所以它可能没有最高优先级,否则它就已经实现了。

相关内容

最新更新