Netdev List
 help / color / mirror / Atom feed
* [PATCH net] net: lan743x: permit VLAN-tagged packets up to configured MTU
@ 2026-05-15 19:23 David Thompson
  2026-05-20  1:30 ` Jakub Kicinski
  0 siblings, 1 reply; 2+ messages in thread
From: David Thompson @ 2026-05-15 19:23 UTC (permalink / raw)
  To: bryan.whitehead, UNGLinuxDriver, andrew+netdev, davem, edumazet,
	kuba, pabeni
  Cc: netdev, linux-kernel, David Thompson

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


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH net] net: lan743x: permit VLAN-tagged packets up to configured MTU
  2026-05-15 19:23 [PATCH net] net: lan743x: permit VLAN-tagged packets up to configured MTU David Thompson
@ 2026-05-20  1:30 ` Jakub Kicinski
  0 siblings, 0 replies; 2+ messages in thread
From: Jakub Kicinski @ 2026-05-20  1:30 UTC (permalink / raw)
  To: David Thompson
  Cc: bryan.whitehead, UNGLinuxDriver, andrew+netdev, davem, edumazet,
	pabeni, netdev, linux-kernel

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-05-20  1:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-15 19:23 [PATCH net] net: lan743x: permit VLAN-tagged packets up to configured MTU David Thompson
2026-05-20  1:30 ` Jakub Kicinski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox