net: sched: use skb_ip_totlen and iph_totlen
authorXin Long <lucien.xin@gmail.com>
Sat, 28 Jan 2023 15:58:33 +0000 (10:58 -0500)
committerJakub Kicinski <kuba@kernel.org>
Thu, 2 Feb 2023 04:54:27 +0000 (20:54 -0800)
There are 1 action and 1 qdisc that may process IPv4 TCP GSO packets
and access iph->tot_len, replace them with skb_ip_totlen() and
iph_totlen() accordingly.

Note that we don't need to replace the one in tcf_csum_ipv4(), as it
will return for TCP GSO packets in tcf_csum_ipv4_tcp().

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/sched/act_ct.c
net/sched/sch_cake.c

index 0ca2bb8..d68bb5d 100644 (file)
@@ -707,7 +707,7 @@ static int tcf_ct_skb_network_trim(struct sk_buff *skb, int family)
 
        switch (family) {
        case NFPROTO_IPV4:
-               len = ntohs(ip_hdr(skb)->tot_len);
+               len = skb_ip_totlen(skb);
                break;
        case NFPROTO_IPV6:
                len = sizeof(struct ipv6hdr)
index 3ed0c33..7970217 100644 (file)
@@ -1209,7 +1209,7 @@ static struct sk_buff *cake_ack_filter(struct cake_sched_data *q,
                            iph_check->daddr != iph->daddr)
                                continue;
 
-                       seglen = ntohs(iph_check->tot_len) -
+                       seglen = iph_totlen(skb, iph_check) -
                                       (4 * iph_check->ihl);
                } else if (iph_check->version == 6) {
                        ipv6h = (struct ipv6hdr *)iph;