xdp-project / xdp-tools

Utilities and example programs for use with XDP

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Couldn't attach XDP program on iface 'eno6': Invalid argument(-22)

calvin2021y opened this issue · comments

xdp-filter load eno6 -f tcp -vv

Current rlimit 16872067072 already >= minimum 1048576
Couldn't open pin directory /sys/fs/bpf/xdp-filter/programs/eno6: No such file or directory
Looking for eBPF program with features tcp,allow
Found prog 'xdpfilt_alw_tcp.o' matching feature set to be loaded on interface 'eno6'.
libxdp: Looking for '/usr/lib/bpf/xdpfilt_alw_tcp.o'
libxdp: Loading XDP program from '/usr/lib/bpf/xdpfilt_alw_tcp.o' section 'xdp_filter'
libbpf: loading /usr/lib/bpf/xdpfilt_alw_tcp.o
libbpf: elf: section(3) xdp_filter, size 2224, link 0, flags 6, type=1
libbpf: sec 'xdp_filter': found program 'xdpfilt_alw_tcp' at insn offset 0 (0 bytes), code size 278 insns (2224 bytes)
libbpf: elf: section(4) .relxdp_filter, size 48, link 28, flags 40, type=9
libbpf: elf: section(5) license, size 4, link 0, flags 3, type=1
libbpf: license of /usr/lib/bpf/xdpfilt_alw_tcp.o is GPL
libbpf: elf: section(6) features, size 4, link 0, flags 3, type=1
libbpf: elf: skipping unrecognized data section(6) features
libbpf: elf: section(7) .maps, size 80, link 0, flags 3, type=1
libbpf: elf: section(8) .xdp_run_config, size 16, link 0, flags 3, type=1
libbpf: elf: skipping unrecognized data section(8) .xdp_run_config
libbpf: elf: section(19) .BTF, size 2574, link 0, flags 0, type=1
libbpf: elf: section(21) .BTF.ext, size 1504, link 0, flags 0, type=1
libbpf: elf: section(28) .symtab, size 1272, link 1, flags 0, type=2
libbpf: looking for externs among 53 symbols...
libbpf: collected 0 externs total
libbpf: map 'xdp_stats_map': at sec_idx 7, offset 0.
libbpf: map 'xdp_stats_map': found type = 6.
libbpf: map 'xdp_stats_map': found key [8], sz = 4.
libbpf: map 'xdp_stats_map': found value [11], sz = 16.
libbpf: map 'xdp_stats_map': found max_entries = 5.
libbpf: map 'xdp_stats_map': found pinning = 1.
libbpf: map 'filter_ports': at sec_idx 7, offset 40.
libbpf: map 'filter_ports': found type = 6.
libbpf: map 'filter_ports': found key [8], sz = 4.
libbpf: map 'filter_ports': found value [12], sz = 8.
libbpf: map 'filter_ports': found max_entries = 65536.
libbpf: map 'filter_ports': found pinning = 1.
libbpf: prog 'xdpfilt_alw_tcp': unrecognized ELF section name 'xdp_filter'
libbpf: sec '.relxdp_filter': collecting relocation for section(3) 'xdp_filter'
libbpf: sec '.relxdp_filter': relo #0: insn #110 against 'filter_ports'
libbpf: prog 'xdpfilt_alw_tcp': found map 1 (filter_ports, sec 7, off 40) for insn #110
libbpf: sec '.relxdp_filter': relo #1: insn #122 against 'filter_ports'
libbpf: prog 'xdpfilt_alw_tcp': found map 1 (filter_ports, sec 7, off 40) for insn #122
libbpf: sec '.relxdp_filter': relo #2: insn #137 against 'xdp_stats_map'
libbpf: prog 'xdpfilt_alw_tcp': found map 0 (xdp_stats_map, sec 7, off 0) for insn #137
libxdp: Found func xdpfilt_alw_tcp matching xdpfilt_alw_tcp
libxdp: Generating multi-prog dispatcher for 1 programs
libxdp: Looking for '/usr/lib/bpf/xdp-dispatcher.o'
libxdp: Loading XDP program from '/usr/lib/bpf/xdp-dispatcher.o' section '(null)'
libbpf: loading /usr/lib/bpf/xdp-dispatcher.o
libbpf: elf: section(2) .text, size 528, link 0, flags 6, type=1
libbpf: sec '.text': found program 'prog0' at insn offset 0 (0 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog1' at insn offset 6 (48 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog2' at insn offset 12 (96 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog3' at insn offset 18 (144 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog4' at insn offset 24 (192 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog5' at insn offset 30 (240 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog6' at insn offset 36 (288 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog7' at insn offset 42 (336 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog8' at insn offset 48 (384 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog9' at insn offset 54 (432 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'compat_test' at insn offset 60 (480 bytes), code size 6 insns (48 bytes)
libbpf: elf: section(3) xdp, size 1200, link 0, flags 6, type=1
libbpf: sec 'xdp': found program 'xdp_dispatcher' at insn offset 0 (0 bytes), code size 148 insns (1184 bytes)
libbpf: sec 'xdp': found program 'xdp_pass' at insn offset 148 (1184 bytes), code size 2 insns (16 bytes)
libbpf: elf: section(4) .relxdp, size 336, link 27, flags 40, type=9
libbpf: elf: section(5) .rodata, size 84, link 0, flags 2, type=1
libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1
libbpf: license of /usr/lib/bpf/xdp-dispatcher.o is GPL
libbpf: elf: section(7) xdp_metadata, size 8, link 0, flags 3, type=1
libbpf: elf: skipping unrecognized data section(7) xdp_metadata
libbpf: elf: section(18) .BTF, size 3212, link 0, flags 0, type=1
libbpf: elf: section(20) .BTF.ext, size 2112, link 0, flags 0, type=1
libbpf: elf: section(27) .symtab, size 1008, link 1, flags 0, type=2
libbpf: looking for externs among 42 symbols...
libbpf: collected 0 externs total
libbpf: map 'xdp_disp.rodata' (global data): at sec_idx 5, offset 0, flags 480.
libbpf: map 0 is "xdp_disp.rodata"
libbpf: sec '.relxdp': collecting relocation for section(3) 'xdp'
libbpf: sec '.relxdp': relo #0: insn #2 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 2
libbpf: sec '.relxdp': relo #1: insn #7 against 'prog0'
libbpf: sec '.relxdp': relo #2: insn #19 against 'prog1'
libbpf: sec '.relxdp': relo #3: insn #20 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 20
libbpf: sec '.relxdp': relo #4: insn #33 against 'prog2'
libbpf: sec '.relxdp': relo #5: insn #34 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 34
libbpf: sec '.relxdp': relo #6: insn #47 against 'prog3'
libbpf: sec '.relxdp': relo #7: insn #48 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 48
libbpf: sec '.relxdp': relo #8: insn #61 against 'prog4'
libbpf: sec '.relxdp': relo #9: insn #62 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 62
libbpf: sec '.relxdp': relo #10: insn #75 against 'prog5'
libbpf: sec '.relxdp': relo #11: insn #76 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 76
libbpf: sec '.relxdp': relo #12: insn #89 against 'prog6'
libbpf: sec '.relxdp': relo #13: insn #90 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 90
libbpf: sec '.relxdp': relo #14: insn #103 against 'prog7'
libbpf: sec '.relxdp': relo #15: insn #104 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 104
libbpf: sec '.relxdp': relo #16: insn #117 against 'prog8'
libbpf: sec '.relxdp': relo #17: insn #118 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 118
libbpf: sec '.relxdp': relo #18: insn #131 against 'prog9'
libbpf: sec '.relxdp': relo #19: insn #132 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 132
libbpf: sec '.relxdp': relo #20: insn #145 against 'compat_test'
libxdp: DATASEC '.xdp_run_config' not found.
libxdp: Verified XDP dispatcher version 1 <= 1
libxdp: Loading multiprog dispatcher for 1 programs
libbpf: map 'xdp_disp.rodata': created successfully, fd=5
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog0'
libbpf: prog 'xdp_dispatcher': insn #7 relocated, imm 140 points to subprog 'prog0' (now at 148 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog1'
libbpf: prog 'xdp_dispatcher': insn #19 relocated, imm 134 points to subprog 'prog1' (now at 154 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog2'
libbpf: prog 'xdp_dispatcher': insn #33 relocated, imm 126 points to subprog 'prog2' (now at 160 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog3'
libbpf: prog 'xdp_dispatcher': insn #47 relocated, imm 118 points to subprog 'prog3' (now at 166 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog4'
libbpf: prog 'xdp_dispatcher': insn #61 relocated, imm 110 points to subprog 'prog4' (now at 172 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog5'
libbpf: prog 'xdp_dispatcher': insn #75 relocated, imm 102 points to subprog 'prog5' (now at 178 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog6'
libbpf: prog 'xdp_dispatcher': insn #89 relocated, imm 94 points to subprog 'prog6' (now at 184 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog7'
libbpf: prog 'xdp_dispatcher': insn #103 relocated, imm 86 points to subprog 'prog7' (now at 190 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog8'
libbpf: prog 'xdp_dispatcher': insn #117 relocated, imm 78 points to subprog 'prog8' (now at 196 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog9'
libbpf: prog 'xdp_dispatcher': insn #131 relocated, imm 70 points to subprog 'prog9' (now at 202 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'compat_test'
libbpf: prog 'xdp_dispatcher': insn #145 relocated, imm 62 points to subprog 'compat_test' (now at 208 offset)
libxdp: Loaded XDP program xdp_dispatcher, got fd 6
libxdp: Checking dispatcher compatibility
libxdp: Looking for '/usr/lib/bpf/xdp-dispatcher.o'
libxdp: Loading XDP program from '/usr/lib/bpf/xdp-dispatcher.o' section '(null)'
libbpf: loading /usr/lib/bpf/xdp-dispatcher.o
libbpf: elf: section(2) .text, size 528, link 0, flags 6, type=1
libbpf: sec '.text': found program 'prog0' at insn offset 0 (0 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog1' at insn offset 6 (48 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog2' at insn offset 12 (96 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog3' at insn offset 18 (144 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog4' at insn offset 24 (192 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog5' at insn offset 30 (240 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog6' at insn offset 36 (288 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog7' at insn offset 42 (336 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog8' at insn offset 48 (384 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'prog9' at insn offset 54 (432 bytes), code size 6 insns (48 bytes)
libbpf: sec '.text': found program 'compat_test' at insn offset 60 (480 bytes), code size 6 insns (48 bytes)
libbpf: elf: section(3) xdp, size 1200, link 0, flags 6, type=1
libbpf: sec 'xdp': found program 'xdp_dispatcher' at insn offset 0 (0 bytes), code size 148 insns (1184 bytes)
libbpf: sec 'xdp': found program 'xdp_pass' at insn offset 148 (1184 bytes), code size 2 insns (16 bytes)
libbpf: elf: section(4) .relxdp, size 336, link 27, flags 40, type=9
libbpf: elf: section(5) .rodata, size 84, link 0, flags 2, type=1
libbpf: elf: section(6) license, size 4, link 0, flags 3, type=1
libbpf: license of /usr/lib/bpf/xdp-dispatcher.o is GPL
libbpf: elf: section(7) xdp_metadata, size 8, link 0, flags 3, type=1
libbpf: elf: skipping unrecognized data section(7) xdp_metadata
libbpf: elf: section(18) .BTF, size 3212, link 0, flags 0, type=1
libbpf: elf: section(20) .BTF.ext, size 2112, link 0, flags 0, type=1
libbpf: elf: section(27) .symtab, size 1008, link 1, flags 0, type=2
libbpf: looking for externs among 42 symbols...
libbpf: collected 0 externs total
libbpf: map 'xdp_disp.rodata' (global data): at sec_idx 5, offset 0, flags 480.
libbpf: map 0 is "xdp_disp.rodata"
libbpf: sec '.relxdp': collecting relocation for section(3) 'xdp'
libbpf: sec '.relxdp': relo #0: insn #2 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 2
libbpf: sec '.relxdp': relo #1: insn #7 against 'prog0'
libbpf: sec '.relxdp': relo #2: insn #19 against 'prog1'
libbpf: sec '.relxdp': relo #3: insn #20 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 20
libbpf: sec '.relxdp': relo #4: insn #33 against 'prog2'
libbpf: sec '.relxdp': relo #5: insn #34 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 34
libbpf: sec '.relxdp': relo #6: insn #47 against 'prog3'
libbpf: sec '.relxdp': relo #7: insn #48 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 48
libbpf: sec '.relxdp': relo #8: insn #61 against 'prog4'
libbpf: sec '.relxdp': relo #9: insn #62 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 62
libbpf: sec '.relxdp': relo #10: insn #75 against 'prog5'
libbpf: sec '.relxdp': relo #11: insn #76 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 76
libbpf: sec '.relxdp': relo #12: insn #89 against 'prog6'
libbpf: sec '.relxdp': relo #13: insn #90 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 90
libbpf: sec '.relxdp': relo #14: insn #103 against 'prog7'
libbpf: sec '.relxdp': relo #15: insn #104 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 104
libbpf: sec '.relxdp': relo #16: insn #117 against 'prog8'
libbpf: sec '.relxdp': relo #17: insn #118 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 118
libbpf: sec '.relxdp': relo #18: insn #131 against 'prog9'
libbpf: sec '.relxdp': relo #19: insn #132 against '.rodata'
libbpf: prog 'xdp_dispatcher': found data map 0 (xdp_disp.rodata, sec 5, off 0) for insn 132
libbpf: sec '.relxdp': relo #20: insn #145 against 'compat_test'
libxdp: DATASEC '.xdp_run_config' not found.
libbpf: map 'xdp_disp.rodata': created successfully, fd=10
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog0'
libbpf: prog 'xdp_dispatcher': insn #7 relocated, imm 140 points to subprog 'prog0' (now at 148 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog1'
libbpf: prog 'xdp_dispatcher': insn #19 relocated, imm 134 points to subprog 'prog1' (now at 154 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog2'
libbpf: prog 'xdp_dispatcher': insn #33 relocated, imm 126 points to subprog 'prog2' (now at 160 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog3'
libbpf: prog 'xdp_dispatcher': insn #47 relocated, imm 118 points to subprog 'prog3' (now at 166 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog4'
libbpf: prog 'xdp_dispatcher': insn #61 relocated, imm 110 points to subprog 'prog4' (now at 172 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog5'
libbpf: prog 'xdp_dispatcher': insn #75 relocated, imm 102 points to subprog 'prog5' (now at 178 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog6'
libbpf: prog 'xdp_dispatcher': insn #89 relocated, imm 94 points to subprog 'prog6' (now at 184 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog7'
libbpf: prog 'xdp_dispatcher': insn #103 relocated, imm 86 points to subprog 'prog7' (now at 190 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog8'
libbpf: prog 'xdp_dispatcher': insn #117 relocated, imm 78 points to subprog 'prog8' (now at 196 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'prog9'
libbpf: prog 'xdp_dispatcher': insn #131 relocated, imm 70 points to subprog 'prog9' (now at 202 offset)
libbpf: prog 'xdp_dispatcher': added 6 insns from sub-prog 'compat_test'
libbpf: prog 'xdp_dispatcher': insn #145 relocated, imm 62 points to subprog 'compat_test' (now at 208 offset)
libxdp: Loaded XDP program xdp_pass, got fd 12
libxdp: Acquired lock from /sys/fs/bpf/xdp with fd 15
libxdp: Released lock fd 15
libxdp: Linking prog xdpfilt_alw_tcp as multiprog entry 0
libbpf: reused pinned map at '/sys/fs/bpf/xdp-filter/xdp_stats_map'
libbpf: map 'xdp_stats_map': skipping creation (preset fd=11)
libbpf: reused pinned map at '/sys/fs/bpf/xdp-filter/filter_ports'
libbpf: map 'filter_ports': skipping creation (preset fd=12)
libxdp: Loaded XDP program xdpfilt_alw_tcp, got fd 10
libxdp: Found func xdpfilt_alw_tcp matching xdpfilt_alw_tcp
libxdp: Attached prog 'xdpfilt_alw_tcp' with priority 10 in dispatcher entry 'prog0' with fd 15
libxdp: Acquired lock from /sys/fs/bpf/xdp with fd 16
libxdp: Pinning multiprog fd 8 beneath /sys/fs/bpf/xdp/dispatch-5-171
libxdp: Pinned link for prog xdpfilt_alw_tcp at /sys/fs/bpf/xdp/dispatch-5-171/prog0-link
libxdp: Pinned prog xdpfilt_alw_tcp at /sys/fs/bpf/xdp/dispatch-5-171/prog0-prog
libxdp: Released lock fd 16
libxdp: Replacing XDP fd -1 with 8 on ifindex 5
libxdp: Error attaching XDP program to ifindex 5: Invalid argument
libxdp: Failed to attach dispatcher on ifindex 5: Invalid argument
libxdp: Acquired lock from /sys/fs/bpf/xdp with fd 16
libxdp: Unpinning multiprog fd 8 beneath /sys/fs/bpf/xdp/dispatch-5-171
libxdp: Unpinned link for prog xdpfilt_alw_tcp from /sys/fs/bpf/xdp/dispatch-5-171/prog0-link
libxdp: Unpinned prog xdpfilt_alw_tcp from /sys/fs/bpf/xdp/dispatch-5-171/prog0-prog
libxdp: Removed pin directory /sys/fs/bpf/xdp/dispatch-5-171
libxdp: Released lock fd 16
Couldn't attach XDP program on iface 'eno6': Invalid argument(-22)

debian12 6.1.27 #8, ixgbevf for intel X550

Yes, I use 9000 mtu.

Right, the ixgbevf driver doesn't support XDP with big MTU sizes, so that's why you're seeing the error...

any work around for this limit ? I can accept a certain performance penalty but want keep large MTU.

I want add source ip and dst ip limit for the device with large MTU.

int bpf_load(const char *path, const char *fn, int ifindex) {
    struct bpf_object *obj = NULL;
    struct bpf_program *prog = NULL;
	struct bpf_link *link = NULL;
	struct bpf_insn *insns = NULL;
	LIBBPF_OPTS(bpf_xdp_attach_opts, opts);
	size_t insns_cnt;
	int errn0 =0;
	int line  =0;
	switch(1) default : {
		obj = bpf_object__open_file(path, NULL);
		if( obj == NULL ) {
			line = __LINE__;
			break;
		}
		prog = bpf_object__find_program_by_name(obj, fn);
	    if ( prog == NULL ) {
			line = __LINE__;
			break;
	    }
		errn0 = bpf_program__set_type(prog, BPF_PROG_TYPE_XDP);
	    if ( errn0 < 0 ) {
			line = __LINE__;
			break;
	    }
		int prog_fd = bpf_program__fd(prog);
		if( prog_fd < 0 ){
			errn0 = prog_fd;
			line = __LINE__;
			break;
		}
		errn0 = bpf_xdp_attach(ifindex, prog_fd, XDP_FLAGS_UPDATE_IF_NOEXIST, &opts);
	    if ( errn0 < 0 ) {
			line = __LINE__;
			break;
	    }
		// errn0 = bpf_prog_load();
	    if ( errn0 < 0 ) {
			line = __LINE__;
			break;
	    }
	}
	return line;
}

I try use libbpf do the work, I guess if call bpf_xdp_attach will no need call bpf_prog_load?

If I rebuild the kernel with CONFIG_PAGE_SIZE_16KB, can I use 9000 MTU for ixgbe ?

I can not change the hardware, is there a software solution to allow large MTU with this NIC ?

Closing this issue as resolved