Hello everyone,

First time poster.  If this isn't the correct forum for this kind of thing feel 
free to point me in the right direction.

I am attempting to build the openvswitch kernel module so that I can use the 
Kubernetes Weave CNI "fast data path" feature on an NVidia Xavier single board 
computer.  I've run into a problem where the compoiled openvswitch kernel 
modules ends up with a number of undefined symbols of the form rpl_gre_*.  I've 
been able to "fix" the problem (see below), but am sure the fix isn't a good 
one and wanted to get a better understanding of the issue.

For the general setup:
- Working on an NVidia Xavier with Jetpack 4.6 and kernel version 
`4.9.253-tegra #1 SMP PREEMPT Mon Jul 26 12:19:28 PDT 2021 aarch64`.
  - In particular the kernel is a custom build from NVidia and may be 
nonstandard.
- Using Open vSwitch version 2.17.0 downloaded from main Open vSwitch site
  - Configured with boot.sh and ./configure --with-linux=/lib/modules/$(uname 
-r)/build

When I run make I get the following output.  In particular the missing symbols 
are a fatal problem.
```
make  all-recursive
make[1]: Entering directory '/home/nvidia/openvswitch-2.17.0'
Making all in datapath
make[2]: Entering directory '/home/nvidia/openvswitch-2.17.0/datapath'
Making all in linux
make[3]: Entering directory '/home/nvidia/openvswitch-2.17.0/datapath/linux'
make -C /lib/modules/4.9.253-tegra/build  
M=/home/nvidia/openvswitch-2.17.0/datapath/linux modules
make[4]: Entering directory 
'/usr/src/linux-headers-4.9.253-tegra-ubuntu18.04_aarch64/kernel-4.9'
  Building modules, stage 2.
  MODPOST 6 modules
WARNING: "rpl_gre_exit" 
[/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined!
WARNING: "rpl_gre_add_protocol" 
[/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined!
WARNING: "rpl_gre_build_header" 
[/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined!
WARNING: "rpl_gre_parse_header" 
[/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined!
WARNING: "rpl_gre_del_protocol" 
[/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined!
WARNING: "rpl_gre_init" 
[/home/nvidia/openvswitch-2.17.0/datapath/linux/openvswitch.ko] undefined!
make[4]: Leaving directory 
'/usr/src/linux-headers-4.9.253-tegra-ubuntu18.04_aarch64/kernel-4.9'
make[3]: Leaving directory '/home/nvidia/openvswitch-2.17.0/datapath/linux'
make[3]: Entering directory '/home/nvidia/openvswitch-2.17.0/datapath'
make[3]: Leaving directory '/home/nvidia/openvswitch-2.17.0/datapath'
make[2]: Leaving directory '/home/nvidia/openvswitch-2.17.0/datapath'
make[2]: Entering directory '/home/nvidia/openvswitch-2.17.0'
make[2]: Leaving directory '/home/nvidia/openvswitch-2.17.0'
make[1]: Leaving directory '/home/nvidia/openvswitch-2.17.0'
```

After some digging it seems like the missing functions are defined in the file 
`datapath/linux/compat/ip_gre.c` but are blocked by the macro guard
```
#if IS_ENABLED(CONFIG_NET_IPGRE_DEMUX)
```
I can confirm that "USE_UPSTREAM_TUNNEL" is not set in my build and that it is 
the "CONFIG_NET_IPGRE_DEMUX" flag which is blocking compilation of the missing 
functions.  If I comment out the "IS_ENABLED(CONFIG_NET_IPGRE_DEMUX)" macro 
then I can successfully build and install the kernel module and it appears to 
work.  However it seems like CONFIG_NET_IPGRE_DEMUX might be some sort of 
kernel flag. I'm well out of my depth with kernel stuff so its not clear if 
there are additional implications to this hack or what the correct solution 
would be.

Cheers.
Geoff Goehle.

_______________________________________________
discuss mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to