]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
amd-xgbe: add ethtool jumbo frame selftest
authorRaju Rangoju <Raju.Rangoju@amd.com>
Fri, 31 Oct 2025 11:15:59 +0000 (16:45 +0530)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 6 Nov 2025 12:38:11 +0000 (13:38 +0100)
Adds support for jumbo frame selftest. Works only for
mtu size greater than 1500.

Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com>
Link: https://patch.msgid.link/20251031111555.774425-5-Raju.Rangoju@amd.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/amd/xgbe/xgbe-selftest.c

index 15c51e96bcdf7fc6109b2603738f3233a4799a83..55e5e467facd7f546ba208361ec9fdcfd7a627d9 100644 (file)
@@ -42,11 +42,19 @@ static int xgbe_test_loopback_validate(struct sk_buff *skb,
        struct tcphdr *th;
        struct udphdr *uh;
        struct iphdr *ih;
+       int eat;
 
        skb = skb_unshare(skb, GFP_ATOMIC);
        if (!skb)
                goto out;
 
+       eat = (skb->tail + skb->data_len) - skb->end;
+       if (eat > 0 && skb_shared(skb)) {
+               skb = skb_share_check(skb, GFP_ATOMIC);
+               if (!skb)
+                       goto out;
+       }
+
        if (skb_linearize(skb))
                goto out;
 
@@ -215,6 +223,17 @@ static int xgbe_test_sph(struct xgbe_prv_data *pdata)
        return 0;
 }
 
+static int xgbe_test_jumbo(struct xgbe_prv_data *pdata)
+{
+       struct net_packet_attrs attr = {};
+       int size = pdata->rx_buf_size;
+
+       attr.dst = pdata->netdev->dev_addr;
+       attr.max_size = size - ETH_FCS_LEN;
+
+       return __xgbe_test_loopback(pdata, &attr);
+}
+
 static const struct xgbe_test xgbe_selftests[] = {
        {
                .name = "MAC Loopback   ",
@@ -228,6 +247,10 @@ static const struct xgbe_test xgbe_selftests[] = {
                .name = "Split Header   ",
                .lb = XGBE_LOOPBACK_PHY,
                .fn = xgbe_test_sph,
+       }, {
+               .name = "Jumbo Frame    ",
+               .lb = XGBE_LOOPBACK_PHY,
+               .fn = xgbe_test_jumbo,
        },
 };