Each skb segment needs a dst entry. Signed-off-by: Pravin B Shelar <pshe...@ovn.org> --- datapath/linux/compat/gso.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/datapath/linux/compat/gso.c b/datapath/linux/compat/gso.c index 8812253..9d478f8 100644 --- a/datapath/linux/compat/gso.c +++ b/datapath/linux/compat/gso.c @@ -189,6 +189,7 @@ static struct sk_buff *tnl_skb_gso_segment(struct sk_buff *skb, int outer_l3_offset = skb_network_offset(skb); int outer_l4_offset = skb_transport_offset(skb); struct sk_buff *skb1 = skb; + struct dst_entry *dst = skb_dst(skb); struct sk_buff *segs; __be16 proto = skb->protocol; char cb[sizeof(skb->cb)]; @@ -235,6 +236,10 @@ static struct sk_buff *tnl_skb_gso_segment(struct sk_buff *skb, OVS_GSO_CB(skb)->fix_segment(skb); skb->protocol = proto; + if (skb->next) + dst = dst_clone(dst); + + skb_dst_set(skb, dst); skb = skb->next; } free: -- 1.9.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev