Messages in this thread | | | From | Sanjuán García, Jorge <> | Subject | [PATCH 0/3] net: ethernet: ti: am65-cpsw: Allow for MTU values | Date | Tue, 2 Jan 2024 08:19:05 +0000 |
| |
The am65-cpsw-nuss driver has a fixed definition for the maximum ethernet frame length of 1522 bytes (AM65_CPSW_MAX_PACKET_SIZE). This limits the switch ports to only operate at a maximum MTU of 1500 bytes. When combining this CPSW switch with a DSA switch connected to one of its ports this limitation shows up. The extra 8 bytes the DSA subsystem adds internally to the ethernet frame create resulting frames bigger than 1522 bytes (1518 for non VLAN + 8 for DSA stuff) so they get dropped by the switch.
One of the issues with the the am65-cpsw-nuss driver is that the network device max_mtu was being set to the same fixed value defined for the max total frame length (1522 bytes). This makes the DSA subsystem believe that the MTU of the interface can be set to 1508 bytes to make room for the extra 8 bytes of the DSA headers. However, all packages created assuming the 1500 bytes payload get dropped by the switch as oversized.
This series offers a solution to this problem. First, the max_mtu advertised on the network device and the actual max frame size configured on the switch registers are made consistent by letting the extra room needed for the ethernet headers and the frame checksum (22 bytes including VLAN). Also, make the max frame length configurable via a devicetree property to allow for MTU values greater than 1500 bytes.
Jorge Sanjuan Garcia (3): net: ethernet: ti: am65-cpsw: Fix max mtu to fit ethernet frames net: ethernet: ti: am65-cpsw: Introduce rx_packet_max member net: ethernet: ti: am65-cpsw: Add device tree property to set max MTU
drivers/net/ethernet/ti/am65-cpsw-nuss.c | 26 ++++++++++++++++++------ drivers/net/ethernet/ti/am65-cpsw-nuss.h | 3 +++ 2 files changed, 23 insertions(+), 6 deletions(-)
-- 2.34.1
| |