Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

net: dsa: vsc73xx: fix MTU configuration

Switch in MAXLEN register stores the maximum size of a data frame.
The MTU size is 18 bytes smaller than the frame size.

The current settings are causing problems with packet forwarding.
This patch fixes the MTU settings to proper values.

Fixes: fb77ffc6ec86 ("net: dsa: vsc73xx: make the MTU configurable")
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Link: https://lore.kernel.org/r/20230628194327.1765644-1-paweldembicki@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Pawel Dembicki and committed by
Jakub Kicinski
3cf62c81 48538ccb

+3 -3
+3 -3
drivers/net/dsa/vitesse-vsc73xx-core.c
··· 1025 1025 struct vsc73xx *vsc = ds->priv; 1026 1026 1027 1027 return vsc73xx_write(vsc, VSC73XX_BLOCK_MAC, port, 1028 - VSC73XX_MAXLEN, new_mtu); 1028 + VSC73XX_MAXLEN, new_mtu + ETH_HLEN + ETH_FCS_LEN); 1029 1029 } 1030 1030 1031 1031 /* According to application not "VSC7398 Jumbo Frames" setting 1032 - * up the MTU to 9.6 KB does not affect the performance on standard 1032 + * up the frame size to 9.6 KB does not affect the performance on standard 1033 1033 * frames. It is clear from the application note that 1034 1034 * "9.6 kilobytes" == 9600 bytes. 1035 1035 */ 1036 1036 static int vsc73xx_get_max_mtu(struct dsa_switch *ds, int port) 1037 1037 { 1038 - return 9600; 1038 + return 9600 - ETH_HLEN - ETH_FCS_LEN; 1039 1039 } 1040 1040 1041 1041 static const struct dsa_switch_ops vsc73xx_ds_ops = {