summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaju Rangoju <Raju.Rangoju@amd.com>2025-10-31 16:45:59 +0530
committerPaolo Abeni <pabeni@redhat.com>2025-11-06 13:38:11 +0100
commit9c11b6b1abcd328136fc0cbc381734d6815d1c16 (patch)
tree5cb961f5db75a9afbda899adb80f7fefcf0794e3
parentd7735c6bb2310f7ca8235af7f946e6c8716cdb5e (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.c23
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,
},
};