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>
This commit is contained in:
Raju Rangoju
2025-10-31 16:45:59 +05:30
committed by Paolo Abeni
parent d7735c6bb2
commit 9c11b6b1ab

View 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,
},
};