Commit 03b1b69f authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Jakub Kicinski
Browse files

net: airoha: Introduce airoha_dev_change_mtu callback



Add airoha_dev_change_mtu callback to update the MTU of a running
device.

Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250304-airoha-eth-rx-sg-v1-3-283ebc61120e@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent e12182dd
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -1705,6 +1705,20 @@ static void airoha_dev_get_stats64(struct net_device *dev,
	} while (u64_stats_fetch_retry(&port->stats.syncp, start));
}

static int airoha_dev_change_mtu(struct net_device *dev, int mtu)
{
	struct airoha_gdm_port *port = netdev_priv(dev);
	struct airoha_eth *eth = port->qdma->eth;
	u32 len = ETH_HLEN + mtu + ETH_FCS_LEN;

	airoha_fe_rmw(eth, REG_GDM_LEN_CFG(port->id),
		      GDM_LONG_LEN_MASK,
		      FIELD_PREP(GDM_LONG_LEN_MASK, len));
	WRITE_ONCE(dev->mtu, mtu);

	return 0;
}

static u16 airoha_dev_select_queue(struct net_device *dev, struct sk_buff *skb,
				   struct net_device *sb_dev)
{
@@ -2400,6 +2414,7 @@ static const struct net_device_ops airoha_netdev_ops = {
	.ndo_init		= airoha_dev_init,
	.ndo_open		= airoha_dev_open,
	.ndo_stop		= airoha_dev_stop,
	.ndo_change_mtu		= airoha_dev_change_mtu,
	.ndo_select_queue	= airoha_dev_select_queue,
	.ndo_start_xmit		= airoha_dev_xmit,
	.ndo_get_stats64        = airoha_dev_get_stats64,