mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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:
committed by
Paolo Abeni
parent
d7735c6bb2
commit
9c11b6b1ab
@@ -42,11 +42,19 @@ static int xgbe_test_loopback_validate(struct sk_buff *skb,
|
|||||||
struct tcphdr *th;
|
struct tcphdr *th;
|
||||||
struct udphdr *uh;
|
struct udphdr *uh;
|
||||||
struct iphdr *ih;
|
struct iphdr *ih;
|
||||||
|
int eat;
|
||||||
|
|
||||||
skb = skb_unshare(skb, GFP_ATOMIC);
|
skb = skb_unshare(skb, GFP_ATOMIC);
|
||||||
if (!skb)
|
if (!skb)
|
||||||
goto out;
|
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))
|
if (skb_linearize(skb))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
@@ -215,6 +223,17 @@ static int xgbe_test_sph(struct xgbe_prv_data *pdata)
|
|||||||
return 0;
|
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[] = {
|
static const struct xgbe_test xgbe_selftests[] = {
|
||||||
{
|
{
|
||||||
.name = "MAC Loopback ",
|
.name = "MAC Loopback ",
|
||||||
@@ -228,6 +247,10 @@ static const struct xgbe_test xgbe_selftests[] = {
|
|||||||
.name = "Split Header ",
|
.name = "Split Header ",
|
||||||
.lb = XGBE_LOOPBACK_PHY,
|
.lb = XGBE_LOOPBACK_PHY,
|
||||||
.fn = xgbe_test_sph,
|
.fn = xgbe_test_sph,
|
||||||
|
}, {
|
||||||
|
.name = "Jumbo Frame ",
|
||||||
|
.lb = XGBE_LOOPBACK_PHY,
|
||||||
|
.fn = xgbe_test_jumbo,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user