|
|
@@ -0,0 +1,39 @@
|
|
|
+From: Felix Fietkau <[email protected]>
|
|
|
+Date: Sun, 31 Aug 2025 20:05:13 +0200
|
|
|
+Subject: [PATCH] net: ethernet: mtk_eth_soc: fix tx vlan tag for llc packets
|
|
|
+
|
|
|
+When sending llc packets with vlan tx offload, the hardware fails to
|
|
|
+actually add the tag. Deal with this by fixing it up in software.
|
|
|
+
|
|
|
+Fixes: 656e705243fd ("net-next: mediatek: add support for MT7623 ethernet")
|
|
|
+Reported-by: Thibaut VARENE <[email protected]>
|
|
|
+Signed-off-by: Felix Fietkau <[email protected]>
|
|
|
+---
|
|
|
+
|
|
|
+--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
|
++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
|
+@@ -1763,6 +1763,13 @@ static netdev_tx_t mtk_start_xmit(struct
|
|
|
+ bool gso = false;
|
|
|
+ int tx_num;
|
|
|
+
|
|
|
++ if (skb_vlan_tag_present(skb) &&
|
|
|
++ !eth_proto_is_802_3(eth_hdr(skb)->h_proto)) {
|
|
|
++ skb = __vlan_hwaccel_push_inside(skb);
|
|
|
++ if (!skb)
|
|
|
++ goto dropped;
|
|
|
++ }
|
|
|
++
|
|
|
+ /* normally we can rely on the stack not calling this more than once,
|
|
|
+ * however we have 2 queues running on the same ring so we need to lock
|
|
|
+ * the ring access
|
|
|
+@@ -1826,8 +1833,9 @@ static netdev_tx_t mtk_start_xmit(struct
|
|
|
+
|
|
|
+ drop:
|
|
|
+ spin_unlock(ð->page_lock);
|
|
|
+- stats->tx_dropped++;
|
|
|
+ dev_kfree_skb_any(skb);
|
|
|
++dropped:
|
|
|
++ stats->tx_dropped++;
|
|
|
+ return NETDEV_TX_OK;
|
|
|
+ }
|
|
|
+
|