我正在尝试运行密件抄送中提供的本教程 XDP 代码。
我使用的代码是这个脚本:bcc/examples/networking/xdp/xdp_drop_count.py。
据我了解,XDP 标志的工作方式如下(来自那个问题):
#define XDP_FLAGS_SKB_MODE (1U << 1)
#define XDP_FLAGS_DRV_MODE (1U << 2)
#define XDP_FLAGS_HW_MODE (1U << 3)
那么,这是否意味着如果我将标志位更改为
flags |= 1 << 3
我应该能够以硬件加速模式(卸载)运行此代码吗?
我有一个支持 XDP HW 加速模式的网卡,当我只用一行代码附加一个简单的程序时它工作正常:
return XDP_PASS;
ip link set dev interface xdpoffload
并通过使用等以卸载模式附加它。
所以我已经确认我的 NIC 能够加载卸载的 XDP 程序,但是当我尝试上述操作时,它给了我一个错误:
bpf: Attaching prog to enp4s0np1: Invalid argumentTraceback (most recent call last) :
File "xdp_drop_count.py", line 132, in <module>
b. attach_xdp(device, fn, flags)
File "usr/lib/python2.7/dist-packages/bcc/__init__.py", line 723, in attach_xdp % (dev, errstr))
Exception : Failed to attach BPF to device enp4s0np1: No such file or directory
另外,当我将标志设置为:
flags |= 1 << 2
我不确定这是否真的在驱动程序模式下运行 XDP 程序。
我错过了什么吗?
先感谢您。