]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net/mlx5e: Count full skb length in TSO byte counters
authorGal Pressman <gal@nvidia.com>
Mon, 4 May 2026 18:37:00 +0000 (21:37 +0300)
committerJakub Kicinski <kuba@kernel.org>
Thu, 7 May 2026 01:38:57 +0000 (18:38 -0700)
The tso_bytes and tso_inner_bytes counters currently subtract the header
length from skb->len, counting only the payload. This is confusing and
doesn't align with the behavior of other _bytes counters in the driver.

Report the full skb length to align with this expectation.

This also makes our behavior consistent with the netdev stats API and
virtio spec definition.

Signed-off-by: Gal Pressman <gal@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20260504183704.272322-2-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c

index 9f0272649fa1eac2383f55570055e2d5b951609e..0b5e600e4a6a95b139277ba82dd7fc23b9fc18d4 100644 (file)
@@ -164,14 +164,14 @@ mlx5e_tx_get_gso_ihs(struct mlx5e_txqsq *sq, struct sk_buff *skb)
                else
                        ihs = skb_inner_tcp_all_headers(skb);
                stats->tso_inner_packets++;
-               stats->tso_inner_bytes += skb->len - ihs;
+               stats->tso_inner_bytes += skb->len;
        } else {
                if (skb_shinfo(skb)->gso_type & SKB_GSO_UDP_L4)
                        ihs = skb_transport_offset(skb) + sizeof(struct udphdr);
                else
                        ihs = skb_tcp_all_headers(skb);
                stats->tso_packets++;
-               stats->tso_bytes += skb->len - ihs;
+               stats->tso_bytes += skb->len;
        }
 
        return ihs;