[ovs-dev] [PATCH] datapath: 16bit inner_network_header field in struct ovs_gso_cb

Jesse Gross jesse at nicira.com
Tue May 20 19:54:32 UTC 2014


On Tue, May 20, 2014 at 3:41 AM, Simon Horman <horms at verge.net.au> wrote:
> diff --git a/datapath/linux/compat/gso.h b/datapath/linux/compat/gso.h
> index b83a4c3..f459c18 100644
> --- a/datapath/linux/compat/gso.h
> +++ b/datapath/linux/compat/gso.h
>  #ifdef NET_SKBUFF_DATA_USES_OFFSET
> -#define skb_inner_network_header rpl_skb_inner_network_header
> -static inline unsigned char *skb_inner_network_header(const struct sk_buff *skb)
> -{
> -       return skb->head + OVS_GSO_CB(skb)->inner_network_header;
> -}
> -
>  #define skb_inner_mac_header rpl_skb_inner_mac_header
>  static inline unsigned char *skb_inner_mac_header(const struct sk_buff *skb)
>  {
>         return skb->head + OVS_GSO_CB(skb)->inner_mac_header;
>  }
>
> +#define skb_inner_network_header rpl_skb_inner_network_header
> +static inline unsigned char *skb_inner_network_header(const struct sk_buff *skb)
> +{
> +       return skb_inner_mac_header(skb) +
> +               OVS_GSO_CB(skb)->inner_network_header;
> +}
> +
>  #else

This looks mostly fine to me but doesn't this need to be outside the
#ifdef NET_SKBUFF_DATA_USES_OFFSET block? Otherwise we will treat the
offset as a pointer on 32 bit kernels.



More information about the dev mailing list