Signed-off-by: Pravin B Shelar <pshe...@ovn.org>
---
 datapath/linux/compat/gso.c | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/datapath/linux/compat/gso.c b/datapath/linux/compat/gso.c
index 8368c6a..de9c8e1 100644
--- a/datapath/linux/compat/gso.c
+++ b/datapath/linux/compat/gso.c
@@ -266,17 +266,13 @@ static int output_ip(struct sk_buff *skb)
 int rpl_ip_local_out(struct net *net, struct sock *sk, struct sk_buff *skb)
 {
        int ret = NETDEV_TX_OK;
-       int id = -1;
+       int id;
 
        if (!OVS_GSO_CB(skb)->fix_segment)
                return output_ip(skb);
 
        skb->encapsulation = false;
        if (skb_is_gso(skb)) {
-               struct iphdr *iph;
-
-               iph = ip_hdr(skb);
-               id = ntohs(iph->id);
                skb = tnl_skb_gso_segment(skb, 0, false, AF_INET);
                if (!skb || IS_ERR(skb))
                        return 0;
@@ -286,17 +282,15 @@ int rpl_ip_local_out(struct net *net, struct sock *sk, 
struct sk_buff *skb)
                err = skb_checksum_help(skb);
                if (unlikely(err))
                        return 0;
+               return output_ip(skb);
        }
 
+       id = ntohs(ip_hdr(skb)->id);
        while (skb) {
                struct sk_buff *next_skb = skb->next;
-               struct iphdr *iph;
 
                skb->next = NULL;
-
-               iph = ip_hdr(skb);
-               if (id >= 0)
-                       iph->id = htons(id++);
+               ip_hdr(skb)->id = htons(id++);
 
                ret = output_ip(skb);
                skb = next_skb;
-- 
1.9.1

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to