OSDN Git Service

net: dsa: microchip: ksz9477: implement MTU configuration
authorOleksij Rempel <o.rempel@pengutronix.de>
Tue, 8 Mar 2022 13:58:57 +0000 (14:58 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 10 Mar 2022 03:47:18 +0000 (19:47 -0800)
commite18058ea99860321851f7e76b8de4a7a4b06f5ed
treeb0f34e6eab9f21fa1c305c62fc1ed757292b72f2
parente58bc864630f0eb5e7bff8ac3c2d5816591189de
net: dsa: microchip: ksz9477: implement MTU configuration

This chips supports two ways to configure max MTU size:
- by setting SW_LEGAL_PACKET_DISABLE bit: if this bit is 0 allowed packed size
  will be between 64 and bytes 1518. If this bit is 1, it will accept
  packets up to 2000 bytes.
- by setting SW_JUMBO_PACKET bit. If this bit is set, the chip will
  ignore SW_LEGAL_PACKET_DISABLE value and use REG_SW_MTU__2 register to
  configure MTU size.

Current driver has disabled SW_JUMBO_PACKET bit and activates
SW_LEGAL_PACKET_DISABLE. So the switch will pass all packets up to 2000 without
any way to configure it.

By providing port_change_mtu we are switch to SW_JUMBO_PACKET way and will
be able to configure MTU up to ~9000.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Link: https://lore.kernel.org/r/20220308135857.1119028-1-o.rempel@pengutronix.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/microchip/ksz9477.c
drivers/net/dsa/microchip/ksz9477_reg.h
drivers/net/dsa/microchip/ksz_common.h