登录
首页 >  Golang >  Go问答

xdpoffload 连接失败:参数无效

来源:stackoverflow

时间:2024-04-09 08:30:35 298浏览 收藏

一分耕耘,一分收获!既然都打开这篇《xdpoffload 连接失败:参数无效》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

当我尝试在 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 public
Error: interface xdpoffload attach failed: Invalid argument

我在驱动程序模式下加载程序没有任何问题,其中 4 被传递给 linksetxdpfdwithflags

我的 nic mellanox mt28800 系列 [connectx-5 ex] 应支持硬件卸载。

我的主 xdp 程序调用两个不同的尾部程序。我使用 bpf_map_type_ringbuf、bpf_map_type_prog_array 和 bpf_map_type_array


正确答案


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

检查此问题的一种方法是在 linux 源代码中 grep 查找 xdp_setup_prog_hw 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 程序卸载到硬件。

今天关于《xdpoffload 连接失败:参数无效》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>