[ovs-dev] [PATCH 02/24] datapath: tnl-segmentation: clone dst for each segment.
Pravin B Shelar
pshelar at ovn.org
Wed Jul 13 05:23:53 UTC 2016
Each skb segment needs a dst entry.
Signed-off-by: Pravin B Shelar <pshelar at 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
More information about the dev
mailing list