1 From 03b1b69f0662c46f258a45e4a7d7837351c11692 Mon Sep 17 00:00:00 2001
2 From: Lorenzo Bianconi <lorenzo@kernel.org>
3 Date: Tue, 4 Mar 2025 15:21:10 +0100
4 Subject: [PATCH 3/6] net: airoha: Introduce airoha_dev_change_mtu callback
6 Add airoha_dev_change_mtu callback to update the MTU of a running
9 Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
10 Reviewed-by: Simon Horman <horms@kernel.org>
11 Link: https://patch.msgid.link/20250304-airoha-eth-rx-sg-v1-3-283ebc61120e@kernel.org
12 Signed-off-by: Jakub Kicinski <kuba@kernel.org>
14 drivers/net/ethernet/airoha/airoha_eth.c | 15 +++++++++++++++
15 1 file changed, 15 insertions(+)
17 --- a/drivers/net/ethernet/airoha/airoha_eth.c
18 +++ b/drivers/net/ethernet/airoha/airoha_eth.c
19 @@ -1706,6 +1706,20 @@ static void airoha_dev_get_stats64(struc
20 } while (u64_stats_fetch_retry(&port->stats.syncp, start));
23 +static int airoha_dev_change_mtu(struct net_device *dev, int mtu)
25 + struct airoha_gdm_port *port = netdev_priv(dev);
26 + struct airoha_eth *eth = port->qdma->eth;
27 + u32 len = ETH_HLEN + mtu + ETH_FCS_LEN;
29 + airoha_fe_rmw(eth, REG_GDM_LEN_CFG(port->id),
31 + FIELD_PREP(GDM_LONG_LEN_MASK, len));
32 + WRITE_ONCE(dev->mtu, mtu);
37 static u16 airoha_dev_select_queue(struct net_device *dev, struct sk_buff *skb,
38 struct net_device *sb_dev)
40 @@ -2398,6 +2412,7 @@ static const struct net_device_ops airoh
41 .ndo_init = airoha_dev_init,
42 .ndo_open = airoha_dev_open,
43 .ndo_stop = airoha_dev_stop,
44 + .ndo_change_mtu = airoha_dev_change_mtu,
45 .ndo_select_queue = airoha_dev_select_queue,
46 .ndo_start_xmit = airoha_dev_xmit,
47 .ndo_get_stats64 = airoha_dev_get_stats64,