[PATCH net] net: lan743x: permit VLAN-tagged packets up to configured MTU

David Thompson posted 1 patch 1 week, 2 days ago
drivers/net/ethernet/microchip/lan743x_main.c | 2 ++
drivers/net/ethernet/microchip/lan743x_main.h | 1 +
2 files changed, 3 insertions(+)
[PATCH net] net: lan743x: permit VLAN-tagged packets up to configured MTU
Posted by David Thompson 1 week, 2 days ago
VLAN-tagged interfaces on lan743x devices were previously unreachable via
SSH and failed to respond to large ping packets (e.g. "ping -s 1469" given
MTU=1500). In these scenarios, "ethtool -S" reports non-zero "RX Oversize
Frame Errors". According to Microchip AN2948, the MAC_RX FSE (VLAN field
size enforcement) bit determines whether frames with VLAN tags exceeding
the base MTU plus tag length are discarded.

The driver must set the MAC_RX.FSE bit before setting MAC_RX.RXEN to allow
VLAN-tagged frames up to the interface MTU, preventing them from being
treated as oversized. As a result, both the base and VLAN-tagged interfaces
can use the same MTU without receive errors.

Fixes: 23f0703c125b ("lan743x: Add main source files for new lan743x driver")
Signed-off-by: David Thompson <davthompson@nvidia.com>
---
 drivers/net/ethernet/microchip/lan743x_main.c | 2 ++
 drivers/net/ethernet/microchip/lan743x_main.h | 1 +
 2 files changed, 3 insertions(+)

diff --git a/drivers/net/ethernet/microchip/lan743x_main.c b/drivers/net/ethernet/microchip/lan743x_main.c
index f3332417162e..6c840f8dd9c3 100644
--- a/drivers/net/ethernet/microchip/lan743x_main.c
+++ b/drivers/net/ethernet/microchip/lan743x_main.c
@@ -1266,6 +1266,8 @@ static int lan743x_mac_open(struct lan743x_adapter *adapter)
 	u32 temp;
 
 	temp = lan743x_csr_read(adapter, MAC_RX);
+	temp |= MAC_RX_FSE_;
+	lan743x_csr_write(adapter, MAC_RX, temp);
 	lan743x_csr_write(adapter, MAC_RX, temp | MAC_RX_RXEN_);
 	temp = lan743x_csr_read(adapter, MAC_TX);
 	lan743x_csr_write(adapter, MAC_TX, temp | MAC_TX_TXEN_);
diff --git a/drivers/net/ethernet/microchip/lan743x_main.h b/drivers/net/ethernet/microchip/lan743x_main.h
index 160d94a7cee6..1573c8f9c993 100644
--- a/drivers/net/ethernet/microchip/lan743x_main.h
+++ b/drivers/net/ethernet/microchip/lan743x_main.h
@@ -182,6 +182,7 @@
 #define MAC_RX				(0x104)
 #define MAC_RX_MAX_SIZE_SHIFT_		(16)
 #define MAC_RX_MAX_SIZE_MASK_		(0x3FFF0000)
+#define MAC_RX_FSE_			BIT(2)
 #define MAC_RX_RXD_			BIT(1)
 #define MAC_RX_RXEN_			BIT(0)
 
-- 
2.43.0
Re: [PATCH net] net: lan743x: permit VLAN-tagged packets up to configured MTU
Posted by Jakub Kicinski 5 days, 6 hours ago
On Fri, 15 May 2026 19:23:57 +0000 David Thompson wrote:
> The driver must set the MAC_RX.FSE bit before setting MAC_RX.RXEN to allow
> VLAN-tagged frames up to the interface MTU

AFAIU this sentence indicates that the double write 
is intentional but could you make that more explicit?
Maybe mention whether this is based on experience or the AN?

It's going to be invaluable if someone ever sends a "cleanup"
to fold the writes into one..

>  	temp = lan743x_csr_read(adapter, MAC_RX);
> +	temp |= MAC_RX_FSE_;
> +	lan743x_csr_write(adapter, MAC_RX, temp);
>  	lan743x_csr_write(adapter, MAC_RX, temp | MAC_RX_RXEN_);
-- 
pw-bot: cr