From: Raju Rangoju Date: Fri, 31 Oct 2025 11:15:59 +0000 (+0530) Subject: amd-xgbe: add ethtool jumbo frame selftest X-Git-Tag: v6.19-rc1~170^2~224^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9c11b6b1abcd328136fc0cbc381734d6815d1c16;p=thirdparty%2Fkernel%2Flinux.git amd-xgbe: add ethtool jumbo frame selftest Adds support for jumbo frame selftest. Works only for mtu size greater than 1500. Signed-off-by: Raju Rangoju Link: https://patch.msgid.link/20251031111555.774425-5-Raju.Rangoju@amd.com Signed-off-by: Paolo Abeni --- diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-selftest.c b/drivers/net/ethernet/amd/xgbe/xgbe-selftest.c index 15c51e96bcdf7..55e5e467facd7 100644 --- a/drivers/net/ethernet/amd/xgbe/xgbe-selftest.c +++ b/drivers/net/ethernet/amd/xgbe/xgbe-selftest.c @@ -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, }, };