diff mbox series

net: ethernet: ti: cpsw: Set max and min MTU sizes

Message ID 20220906113212.8680-1-alexandre.bard@netmodule.com
State New
Headers show
Series net: ethernet: ti: cpsw: Set max and min MTU sizes | expand

Commit Message

Alexandre Bard Sept. 6, 2022, 11:32 a.m. UTC
These fields need to be set in order for the userspace or DSA drivers to
change the MTU to bigger or smaller values. They default to 68 and 1500
respectively. Since the hardware supports wider limits, it is all
benefit to set them.

Specially when connecting a DSA switch, the DSA code wants to set the
MTU of the cpsw port to 1500 + tag size. This was failing without this
change.

Signed-off-by: Alexandre Bard <alexandre.bard@netmodule.com>
---
 drivers/net/ethernet/ti/cpsw.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Romain Naour Feb. 3, 2023, 10:23 a.m. UTC | #1
Hello,

Adding missing ML and maintainers in Cc.

Le 06/09/2022 à 13:32, Alexandre Bard a écrit :
> These fields need to be set in order for the userspace or DSA drivers to
> change the MTU to bigger or smaller values. They default to 68 and 1500
> respectively. Since the hardware supports wider limits, it is all
> benefit to set them.
> 
> Specially when connecting a DSA switch, the DSA code wants to set the
> MTU of the cpsw port to 1500 + tag size. This was failing without this
> change.

I had a similar issue with the cpsw_new driver (TI CPSW Switch Support with
switchdev):

eth0: mtu greater than device maximum
cpsw-switch 48484000.switch eth0: error -22 setting MTU to 1502 to include DSA
overhead

I did the same changes to allow setting the MTU on cpsw_new driver when used
with DSA switch.

Also I noticed that the am65-cpsw-nuss already initialize min_mtu and max_mtu [1].

[1]
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/net/ethernet/ti/am65-cpsw-nuss.c?h=linux-6.1.y#n1981

Best regards,
Romain

> 
> Signed-off-by: Alexandre Bard <alexandre.bard@netmodule.com>
> ---
>  drivers/net/ethernet/ti/cpsw.c | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
> index ed66c4d4d830..83d8c6a8a527 100644
> --- a/drivers/net/ethernet/ti/cpsw.c
> +++ b/drivers/net/ethernet/ti/cpsw.c
> @@ -1631,6 +1631,9 @@ static int cpsw_probe(struct platform_device *pdev)
>  
>  	eth_hw_addr_set(ndev, priv->mac_addr);
>  
> +	ndev->min_mtu = CPSW_MIN_PACKET_SIZE;
> +	ndev->max_mtu = CPSW_MAX_PACKET_SIZE;
> +
>  	cpsw->slaves[0].ndev = ndev;
>  
>  	ndev->features |= NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_HW_VLAN_CTAG_RX;
diff mbox series

Patch

diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
index ed66c4d4d830..83d8c6a8a527 100644
--- a/drivers/net/ethernet/ti/cpsw.c
+++ b/drivers/net/ethernet/ti/cpsw.c
@@ -1631,6 +1631,9 @@  static int cpsw_probe(struct platform_device *pdev)
 
 	eth_hw_addr_set(ndev, priv->mac_addr);
 
+	ndev->min_mtu = CPSW_MIN_PACKET_SIZE;
+	ndev->max_mtu = CPSW_MAX_PACKET_SIZE;
+
 	cpsw->slaves[0].ndev = ndev;
 
 	ndev->features |= NETIF_F_HW_VLAN_CTAG_FILTER | NETIF_F_HW_VLAN_CTAG_RX;