Hello,
I am trying to compile a self-made kernel module package, and found out that I need access into ndo_flow_offload_check struct and after managed to enable and compiling kernel with CONFIG_NF_FLOW_TABLE=y by using make kernel_menuconfig, I have found out that "net/netfilter/nf_flow_table.h" is not included a long with other kernel_headers files in the staging_dir.
Been spending some hours trying to tackle this, but hitting a dead end as google result also quite empty regarding ndo_flow_offload_check on 5.15
The question are :
- How to include automatically other extra kernel modules on toolchain kernel_headers package for being use for kernel module compilation?
- What is the current alternative or replacement for ndo_flow_offload_check struct in 5.15?
The errors :
make[3]: Entering directory '/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/linux-5.15.79'
CC [M] /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat.o
CC [M] /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.o
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c: In function 'foe_clear_all_bind_entries':
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:194:29: error: 'const struct net_device_ops' has no member named 'ndo_flow_offload_check'
194 | !dev->netdev_ops->ndo_flow_offload_check)
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c: In function 'hnat_set_iif':
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:579:42: error: 'const struct net_device_ops' has no member named 'ndo_flow_offload_check'
579 | if (state->in->netdev_ops->ndo_flow_offload_check) {
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c: In function 'hnat_ipv6_get_nexthop':
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:988:20: error: invalid use of undefined type 'struct flow_offload_hw_path'
988 | if (hw_path->flags & FLOW_OFFLOAD_PATH_PPPOE) {
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:988:30: error: 'FLOW_OFFLOAD_PATH_PPPOE' undeclared (first use in this function)
988 | if (hw_path->flags & FLOW_OFFLOAD_PATH_PPPOE) {
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:988:30: note: each undeclared identifier is reported only once for each function it appears in
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:989:55: error: invalid use of undefined type 'struct flow_offload_hw_path'
989 | memcpy(eth_hdr(skb)->h_source, hw_path->eth_src, ETH_ALEN);
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:990:53: error: invalid use of undefined type 'struct flow_offload_hw_path'
990 | memcpy(eth_hdr(skb)->h_dest, hw_path->eth_dest, ETH_ALEN);
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c: In function 'hnat_ipv4_get_nexthop':
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1037:20: error: invalid use of undefined type 'struct flow_offload_hw_path'
1037 | if (hw_path->flags & FLOW_OFFLOAD_PATH_PPPOE) {
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1037:30: error: 'FLOW_OFFLOAD_PATH_PPPOE' undeclared (first use in this function)
1037 | if (hw_path->flags & FLOW_OFFLOAD_PATH_PPPOE) {
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1038:55: error: invalid use of undefined type 'struct flow_offload_hw_path'
1038 | memcpy(eth_hdr(skb)->h_source, hw_path->eth_src, ETH_ALEN);
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1039:53: error: invalid use of undefined type 'struct flow_offload_hw_path'
1039 | memcpy(eth_hdr(skb)->h_dest, hw_path->eth_dest, ETH_ALEN);
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c: In function 'ppe_fill_L2_info':
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1097:52: error: invalid use of undefined type 'struct flow_offload_hw_path'
1097 | entry.ipv4_hnapt.pppoe_id = hw_path->pppoe_sid;
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1109:55: error: invalid use of undefined type 'struct flow_offload_hw_path'
1109 | entry.ipv6_5t_route.pppoe_id = hw_path->pppoe_sid;
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c: In function 'ppe_fill_info_blk':
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1118:35: error: invalid use of undefined type 'struct flow_offload_hw_path'
1118 | entry.bfib1.psn = (hw_path->flags & FLOW_OFFLOAD_PATH_PPPOE) ? 1 : 0;
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1118:45: error: 'FLOW_OFFLOAD_PATH_PPPOE' undeclared (first use in this function)
1118 | entry.bfib1.psn = (hw_path->flags & FLOW_OFFLOAD_PATH_PPPOE) ? 1 : 0;
| ^~~~~~~~~~~~~~~~~~~~~~~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1119:43: error: invalid use of undefined type 'struct flow_offload_hw_path'
1119 | entry.bfib1.vlan_layer += (hw_path->flags & FLOW_OFFLOAD_PATH_VLAN) ? 1 : 0;
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1119:53: error: 'FLOW_OFFLOAD_PATH_VLAN' undeclared (first use in this function); did you mean 'FLOW_OFFLOAD_DIR_MAX'?
1119 | entry.bfib1.vlan_layer += (hw_path->flags & FLOW_OFFLOAD_PATH_VLAN) ? 1 : 0;
| ^~~~~~~~~~~~~~~~~~~~~~
| FLOW_OFFLOAD_DIR_MAX
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c: In function 'skb_to_hnat_info':
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1261:66: error: invalid use of undefined type 'struct flow_offload_hw_path'
1261 | entry.ipv4_dslite.vlan1 = hw_path->vlan_id;
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1270:65: error: invalid use of undefined type 'struct flow_offload_hw_path'
1270 | entry.ipv4_hnapt.vlan1 = hw_path->vlan_id;
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1322:60: error: invalid use of undefined type 'struct flow_offload_hw_path'
1322 | entry.ipv6_5t_route.vlan1 = hw_path->vlan_id;
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1418:66: error: invalid use of undefined type 'struct flow_offload_hw_path'
1418 | entry.ipv4_dslite.vlan1 = hw_path->vlan_id;
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1443:73: error: invalid use of undefined type 'struct flow_offload_hw_path'
1443 | entry.ipv4_hnapt.vlan1 = hw_path->vlan_id;
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:1507:55: error: invalid use of undefined type 'struct flow_offload_hw_path'
1507 | entry.ipv6_6rd.vlan1 = hw_path->vlan_id;
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c: In function 'mtk_hnat_nf_post_routing':
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:2005:16: error: variable 'hw_path' has initializer but incomplete type
2005 | struct flow_offload_hw_path hw_path = { .dev = (struct net_device*)out,
| ^~~~~~~~~~~~~~~~~~~~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:2005:50: error: 'struct flow_offload_hw_path' has no member named 'dev'
2005 | struct flow_offload_hw_path hw_path = { .dev = (struct net_device*)out,
| ^~~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:2006:50: error: 'struct flow_offload_hw_path' has no member named 'virt_dev'
2006 | .virt_dev = (struct net_device*)out,
| ^~~~~~~~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:2007:50: error: 'struct flow_offload_hw_path' has no member named 'flags'
2007 | .flags = FLOW_OFFLOAD_PATH_ETHERNET };
| ^~~~~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:2007:58: error: 'FLOW_OFFLOAD_PATH_ETHERNET' undeclared (first use in this function)
2007 | .flags = FLOW_OFFLOAD_PATH_ETHERNET };
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:2005:37: error: storage size of 'hw_path' isn't known
2005 | struct flow_offload_hw_path hw_path = { .dev = (struct net_device*)out,
| ^~~~~~~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:2017:28: error: 'const struct net_device_ops' has no member named 'ndo_flow_offload_check'
2017 | if (out->netdev_ops->ndo_flow_offload_check) {
| ^~
/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.c:2018:32: error: 'const struct net_device_ops' has no member named 'ndo_flow_offload_check'
2018 | out->netdev_ops->ndo_flow_offload_check(&hw_path);
| ^~
make[5]: *** [scripts/Makefile.build:289: /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat/hnat_nf_hook.o] Error 1
make[4]: *** [scripts/Makefile.build:552: /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk/mtk_hnat] Error 2
make[3]: *** [Makefile:1901: /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/mtk] Error 2
make[3]: Leaving directory '/home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/linux-5.15.79'
make[2]: *** [Makefile:71: /home/username/works/AX6S/build_dir/target-aarch64_cortex-a53_musl/linux-mediatek_mt7622/mtk-hnat/.built] Error 2
make[2]: Leaving directory '/home/username/works/AX6S/package/kernel/mtk-hnat'
time: package/kernel/mtk-hnat/compile#2.14#0.78#2.89
ERROR: package/kernel/mtk-hnat failed to build.
make[1]: *** [package/Makefile:116: package/kernel/mtk-hnat/compile] Error 1
make[1]: Leaving directory '/home/username/works/AX6S'
make: *** [/home/username/works/AX6S/include/toplevel.mk:231: package/mtk-hnat/compile] Error 2