为什么套接字SO_TIMESTAMP
不支持设置?AF_XDP
我的驱动程序的用户手册 ( 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*)×tamp, sizeof(int)) < 0) {
fprintf(stderr, "Failed to set `SO_TIMESTAMP`: %s\n", strerror(errno));
return;
}
并得到:
设置失败
SO_TIMESTAMP
:协议不可用
SO_XDP
我从xsk.c
(https://github.com/libbpf/libbpf/blob/master/src/xsk.c)复制了定义:
#ifndef SOL_XDP
#define SOL_XDP 283
#endif
不明白,为什么不支持。。。