openvswitch: delete the unncessary skb_pull_rcsum call in ovs_ct_nat_execute
authorXin Long <lucien.xin@gmail.com>
Thu, 8 Dec 2022 16:56:08 +0000 (11:56 -0500)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Dec 2022 10:14:03 +0000 (10:14 +0000)
The calls to ovs_ct_nat_execute() are as below:

  ovs_ct_execute()
    ovs_ct_lookup()
      __ovs_ct_lookup()
        ovs_ct_nat()
          ovs_ct_nat_execute()
    ovs_ct_commit()
      __ovs_ct_lookup()
        ovs_ct_nat()
          ovs_ct_nat_execute()

and since skb_pull_rcsum() and skb_push_rcsum() are already
called in ovs_ct_execute(), there's no need to do it again
in ovs_ct_nat_execute().

Reviewed-by: Saeed Mahameed <saeed@kernel.org>
Acked-by: Aaron Conole <aconole@redhat.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/openvswitch/conntrack.c

index d78f0fc..dff093a 100644 (file)
@@ -735,10 +735,7 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,
                              const struct nf_nat_range2 *range,
                              enum nf_nat_manip_type maniptype, struct sw_flow_key *key)
 {
-       int hooknum, nh_off, err = NF_ACCEPT;
-
-       nh_off = skb_network_offset(skb);
-       skb_pull_rcsum(skb, nh_off);
+       int hooknum, err = NF_ACCEPT;
 
        /* See HOOK2MANIP(). */
        if (maniptype == NF_NAT_MANIP_SRC)
@@ -755,7 +752,7 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,
                        if (!nf_nat_icmp_reply_translation(skb, ct, ctinfo,
                                                           hooknum))
                                err = NF_DROP;
-                       goto push;
+                       goto out;
                } else if (IS_ENABLED(CONFIG_IPV6) &&
                           skb->protocol == htons(ETH_P_IPV6)) {
                        __be16 frag_off;
@@ -770,7 +767,7 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,
                                                                     hooknum,
                                                                     hdrlen))
                                        err = NF_DROP;
-                               goto push;
+                               goto out;
                        }
                }
                /* Non-ICMP, fall thru to initialize if needed. */
@@ -788,7 +785,7 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,
                                ? nf_nat_setup_info(ct, range, maniptype)
                                : nf_nat_alloc_null_binding(ct, hooknum);
                        if (err != NF_ACCEPT)
-                               goto push;
+                               goto out;
                }
                break;
 
@@ -798,13 +795,11 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,
 
        default:
                err = NF_DROP;
-               goto push;
+               goto out;
        }
 
        err = nf_nat_packet(ct, ctinfo, hooknum, skb);
-push:
-       skb_push_rcsum(skb, nh_off);
-
+out:
        /* Update the flow key if NAT successful. */
        if (err == NF_ACCEPT)
                ovs_nat_update_key(key, skb, maniptype);