Commit d4736737 authored by Felix Fietkau's avatar Felix Fietkau Committed by Jakub Kicinski
Browse files

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: 656e7052 ("net-next: mediatek: add support for MT7623 ethernet")
Reported-by: default avatarThibaut VARENE <hacks@slashdirt.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250831182007.51619-1-nbd@nbd.name


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent c06ca8ce
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -1761,6 +1761,13 @@ static netdev_tx_t mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
	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
@@ -1806,8 +1813,9 @@ static netdev_tx_t mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)

drop:
	spin_unlock(&eth->page_lock);
	stats->tx_dropped++;
	dev_kfree_skb_any(skb);
dropped:
	stats->tx_dropped++;
	return NETDEV_TX_OK;
}