At the core of this patch set is removing the assumption in Open vSwitch datapath that all packets have Ethernet header. Support for layer 3 GRE tunnels is also added by this patchset.
The implementation relies on the presence of pop_eth and push_eth actions in datapath flows to facilitate adding and removing Ethernet headers as appropriate. The construction of such flows is left up to user-space. This series is based on work by Lorand Jakab, Thomas Morin and others. And it relies on recently merged work by Jiri Benc, much thanks to him for his help. This patch set is comprised of kernel patches against net-next. To aid review it and the above dependency is available at: tree: https://github.com/horms/openvswitch branch: l3-vpn tag: l3-vpn-v11 There is a companion patch set for the Open vSwitch user-space code which I will post separately to the d...@openvswitch.org mailing list as: "[PATCH v12 0/3] userspace: Support for layer 3 encapsulated packets" Lorand Jakab (1): openvswitch: add layer 3 flow/port support Simon Horman (5): net: introduce skb_transport_header_was_set() gre: unset mac header for non-TEB packets received by ipgre device openvswitch: set skb protocol and mac_len when receiving on internal device openvswitch: add support to push and pop mpls for layer3 packets openvswitch: use ipgre tunnel rather than gretap tunnel include/linux/skbuff.h | 5 + include/net/gre.h | 4 +- include/uapi/linux/openvswitch.h | 13 +++ net/ipv4/ip_gre.c | 11 +- net/openvswitch/actions.c | 69 ++++++++++-- net/openvswitch/datapath.c | 13 +-- net/openvswitch/flow.c | 65 +++++++---- net/openvswitch/flow.h | 4 +- net/openvswitch/flow_netlink.c | 213 ++++++++++++++++++++++++----------- net/openvswitch/vport-geneve.c | 2 +- net/openvswitch/vport-gre.c | 4 +- net/openvswitch/vport-internal_dev.c | 9 ++ net/openvswitch/vport-netdev.c | 27 ++++- net/openvswitch/vport-netdev.h | 2 + net/openvswitch/vport-vxlan.c | 2 +- 15 files changed, 321 insertions(+), 122 deletions(-) -- 2.7.0.rc3.207.g0ac5344