On Mon, Jul 18, 2016 at 4:24 AM, Pravin B Shelar <[email protected]> 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
[email protected]
http://openvswitch.org/mailman/listinfo/dev