diff options
| author | Raju Rangoju <Raju.Rangoju@amd.com> | 2025-10-31 16:45:59 +0530 |
|---|---|---|
| committer | Paolo Abeni <pabeni@redhat.com> | 2025-11-06 13:38:11 +0100 |
| commit | 9c11b6b1abcd328136fc0cbc381734d6815d1c16 (patch) | |
| tree | 5cb961f5db75a9afbda899adb80f7fefcf0794e3 | |
| parent | d7735c6bb2310f7ca8235af7f946e6c8716cdb5e (diff) | |
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 <Raju.Rangoju@amd.com>
Link: https://patch.msgid.link/20251031111555.774425-5-Raju.Rangoju@amd.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
| -rw-r--r-- | drivers/net/ethernet/amd/xgbe/xgbe-selftest.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-selftest.c b/drivers/net/ethernet/amd/xgbe/xgbe-selftest.c index 15c51e96bcdf..55e5e467facd 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, }, }; |