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 |
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 --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;
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(+)