Commit 9c11b6b1 authored by Raju Rangoju's avatar Raju Rangoju Committed by Paolo Abeni
Browse files

amd-xgbe: add ethtool jumbo frame selftest



Adds support for jumbo frame selftest. Works only for
mtu size greater than 1500.

Signed-off-by: default avatarRaju Rangoju <Raju.Rangoju@amd.com>
Link: https://patch.msgid.link/20251031111555.774425-5-Raju.Rangoju@amd.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent d7735c6b
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -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,
	},
};