为了账号安全,请及时绑定邮箱和手机立即绑定

xdpoffload 附加失败:参数无效

xdpoffload 附加失败:参数无效

Go
aluckdog 2022-11-08 15:14:46
当我尝试在 XDP 卸载模式下附加 BPF 程序时,我得到Invalid argument. 如果通过代码附加或使用bpftool. 这是我使用netlink附加的方式:err = netlink.LinkSetXdpFdWithFlags(link, objects.CollectIpsProg.FD(), 8)从使用bpftool:# bpftool prog loadall collect_ips.o /sys/fs/bpf/collect_ips type xdp# bpftool net attach xdpoffload id 106 dev publicError: interface xdpoffload attach failed: Invalid argument我在驱动程序模式下加载程序没有任何问题,其中4传递给LinkSetXdpFdWithFlags.我的网卡 Mellanox MT28800 系列 [ConnectX-5 Ex] 应该支持硬件卸载。我的主要 XDP 程序调用两个不同的尾部程序。我用BPF_MAP_TYPE_RINGBUF, BPF_MAP_TYPE_PROG_ARRAY, and BPF_MAP_TYPE_ARRAY.
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

Mellanox 卡支持一些硬件卸载(例如,流控制规则),但据我所知不支持 BPF 程序的卸载。唯一支持 BPF 卸载的以太网适配器是Netronome 的卡。


检查这一点的一种方法是XDP_SETUP_PROG_HW在 Linux 源代码中使用 grep 查找 BPF netdev 命令:


$ git grep XDP_SETUP_PROG_HW

drivers/net/ethernet/netronome/nfp/nfp_net_common.c:    case XDP_SETUP_PROG_HW:

drivers/net/netdevsim/bpf.c:    if (bpf->command == XDP_SETUP_PROG_HW && !ns->bpf_xdpoffload_accept) {

drivers/net/netdevsim/bpf.c:    if (bpf->command == XDP_SETUP_PROG_HW) {

drivers/net/netdevsim/bpf.c:    case XDP_SETUP_PROG_HW:

include/linux/netdevice.h:      XDP_SETUP_PROG_HW,

net/core/dev.c: xdp.command = mode == XDP_MODE_HW ? XDP_SETUP_PROG_HW : XDP_SETUP_PROG;

该命令用于告诉驱动程序通过ndo_bpf回调函数将 BPF 程序卸载到硬件。


查看完整回答
反对 回复 2022-11-08
  • 1 回答
  • 0 关注
  • 282 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信