OVS tunnel compat code depends on this function pointer to handle GSO packet. Currently we do not initialize for all GRE GSO packets. Following patch fixes that.
Signed-off-by: Pravin B Shelar <pshe...@nicira.com> --- datapath/linux/compat/gre.c | 2 ++ datapath/linux/compat/gso.h | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/datapath/linux/compat/gre.c b/datapath/linux/compat/gre.c index 07b270a..8c133de 100644 --- a/datapath/linux/compat/gre.c +++ b/datapath/linux/compat/gre.c @@ -292,6 +292,8 @@ struct sk_buff *gre_handle_offloads(struct sk_buff *skb, bool gre_csum) if (skb_is_gso(skb)) { if (gre_csum) OVS_GSO_CB(skb)->fix_segment = gre_csum_fix; + else + OVS_GSO_CB(skb)->fix_segment = NULL; } else { if (skb->ip_summed == CHECKSUM_PARTIAL && gre_csum) { err = skb_checksum_help(skb); diff --git a/datapath/linux/compat/gso.h b/datapath/linux/compat/gso.h index 6281f29..20ec55c 100644 --- a/datapath/linux/compat/gso.h +++ b/datapath/linux/compat/gso.h @@ -12,13 +12,13 @@ struct ovs_gso_cb { struct ovs_skb_cb dp_cb; + void (*fix_segment)(struct sk_buff *); + sk_buff_data_t inner_mac_header; /* Offset from skb->head */ #if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0) __be16 inner_protocol; #endif u16 inner_network_header; /* Offset from * inner_mac_header */ - sk_buff_data_t inner_mac_header; /* Offset from skb->head */ - void (*fix_segment)(struct sk_buff *); }; #define OVS_GSO_CB(skb) ((struct ovs_gso_cb *)(skb)->cb) -- 1.7.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev