On Mon, Jul 18, 2016 at 4:24 AM, Pravin B Shelar <pshe...@ovn.org> wrote: > diff --git a/datapath/linux/compat/include/linux/if_ether.h > b/datapath/linux/compat/include/linux/if_ether.h > index b2cb56d..ac0f1ed 100644 > --- a/datapath/linux/compat/include/linux/if_ether.h > +++ b/datapath/linux/compat/include/linux/if_ether.h > @@ -11,10 +11,9 @@ > #define ETH_P_8021AD 0x88A8 /* 802.1ad Service VLAN */ > #endif > > -#ifndef HAVE_INNER_ETH_HDR > +#define inner_eth_hdr rpl_inner_eth_hdr > static inline struct ethhdr *inner_eth_hdr(const struct sk_buff *skb) > { > return (struct ethhdr *)skb_inner_mac_header(skb); > } > #endif > -#endif
Why do we need this change? It looks like inner_eth_hdr() and skb_inner_mac_header() are the same on all kernel versions that we support. > diff --git a/datapath/linux/compat/include/net/udp_tunnel.h > b/datapath/linux/compat/include/net/udp_tunnel.h > index ded7f30..5ba1cbf 100644 > --- a/datapath/linux/compat/include/net/udp_tunnel.h > +++ b/datapath/linux/compat/include/net/udp_tunnel.h [...] > static inline int rpl_udp_tunnel_handle_offloads(struct sk_buff *skb, > - bool udp_csum, > - bool is_vxlan) > + bool udp_csum) > { > int type = 0; > > @@ -178,14 +164,8 @@ static inline int rpl_udp_tunnel_handle_offloads(struct > sk_buff *skb, > else > fix_segment = ovs_udp_csum_gso; > > -#if LINUX_VERSION_CODE < KERNEL_VERSION(3,18,0) > - if (!is_vxlan) > - type = 0; > -#endif I don't know that it is safe to remove this. The intention was to avoid problems that assumed UDP_TUNNEL offloads really meant VXLAN on kernels where VXLAN was the only UDP tunnel. > diff --git a/datapath/linux/compat/lisp.c b/datapath/linux/compat/lisp.c > index dd23059..c9cc809 100644 > --- a/datapath/linux/compat/lisp.c > +++ b/datapath/linux/compat/lisp.c > @@ -290,6 +290,29 @@ static struct rtable *lisp_get_rt(struct sk_buff *skb, > return ip_route_output_key(net, fl); > } > > +/* this is to handle the return type change in handle-offload > + * functions. > + */ > +#if !defined(HAVE_UDP_TUNNEL_HANDLE_OFFLOAD_RET_SKB) || > !defined(USE_UPSTREAM_TUNNEL) > +static struct sk_buff * > +__udp_tunnel_handle_offloads(struct sk_buff *skb, bool udp_csum) > +{ > + int err; > + > + if (skb_is_gso(skb) && skb_is_encapsulated(skb)) { > + return ERR_PTR(-ENOSYS); > + } > + err = udp_tunnel_handle_offloads(skb, udp_csum); > + if (err) { > + kfree_skb(skb); > + return NULL; > + } > + return skb; > +} > +#else > +#define __udp_tunnel_handle_offloads udp_tunnel_handle_offloads > +#endif Aren't the checks in __udp_tunnel_handle_offloads() mostly about the fact that we don't have a device layer to deal with offloads? In that case, I think they would still be needed in all situations with LISP/STT. _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev