ovs-vswitchd doesn't use OVS_VPORT_TYPE_GRE/VXLAN/GENEVE with upstream Linux kernel module since adding support for standard tunnel devices with COLLECT_METADATA back in 2017. The code to use them is still present, but it is only activated as a fallback for old kernels, so not used in practice. And it is marked for removal in the next OVS release this summer. Modern way to use tunnels with OVS is to create standard tunnel ports with RTM_NEWLINK + COLLECT_METADATA and add them as OVS_VPORT_TYPE_NETDEV.
Device reference management and the netlink options parsing for these legacy port types is complicated and was a CVE magnet recently. Since there are no actual users for these port types for a very long time, let's just remove the support entirely. There are 3 parts to this set: 1. The first patch does the tunnel port removal, which is the primary goal here. 2. Patches 2 and 3 remove extra infrastructure that is no longer in use by anything inside the openvswitch module. It may technically be used by some out-of-tree module, but it is unlikely, so the proposal here is to also just remove it. Or we can consider deprecation. It's not really a user API, it's an API for modules. Which can be considered as users, I guess. Not sure. 3. Patches 4-6 remove functions from gre/vxlan/geneve modules that were added for openvswitch in the past to support the tunnel types. And openvswitch is the only in-tree consumer of these functions, so we could remove them. But they are also exported symbols, so can in theory be used by some out-of-tree modules, though I doubt that. Not sure what the process should be here. Removal seems reasonable, but we may consider deprecation first. Thoughts? Ilya Maximets (6): openvswitch: remove support for legacy tunnel types openvswitch: vport: remove infrastructure for vport options openvswitch: vport: remove infrastructure for separate modules net: geneve: remove unused geneve_dev_create_fb net: gre: remove unused gretap_fb_dev_create net: vxlan: remove unused vxlan_dev_create drivers/net/geneve.c | 48 ----- drivers/net/vxlan/vxlan_core.c | 42 +---- include/net/geneve.h | 5 - include/net/gre.h | 2 - include/net/vxlan.h | 3 - include/uapi/linux/openvswitch.h | 31 +++- net/ipv4/ip_gre.c | 47 ----- net/openvswitch/Kconfig | 35 ---- net/openvswitch/Makefile | 4 - net/openvswitch/datapath.c | 22 +-- net/openvswitch/vport-geneve.c | 143 --------------- net/openvswitch/vport-gre.c | 106 ----------- net/openvswitch/vport-netdev.c | 28 +-- net/openvswitch/vport-netdev.h | 3 +- net/openvswitch/vport-vxlan.c | 172 ------------------ net/openvswitch/vport.c | 76 +------- net/openvswitch/vport.h | 23 +-- tools/testing/selftests/net/config | 3 - .../selftests/net/openvswitch/openvswitch.sh | 37 ---- .../selftests/net/openvswitch/ovs-dpctl.py | 93 +++------- 20 files changed, 59 insertions(+), 864 deletions(-) delete mode 100644 net/openvswitch/vport-geneve.c delete mode 100644 net/openvswitch/vport-gre.c delete mode 100644 net/openvswitch/vport-vxlan.c -- 2.53.0

