FAILED: patch "[PATCH] net: dsa: lan9303: handle hwaccel VLAN tags" failed to apply to 4.19-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.19-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 017b355bbdc6620fd8fe05fe297f553ce9d855ee Mon Sep 17 00:00:00 2001
From: Mans Rullgard <[email protected]>
Date: Wed, 16 Feb 2022 12:46:34 +0000
Subject: [PATCH] net: dsa: lan9303: handle hwaccel VLAN tags
Check for a hwaccel VLAN tag on rx and use it if present. Otherwise, use __skb_vlan_pop() like the other tag parsers do. This fixes the case where the VLAN tag has already been consumed by the master.
Fixes a1292595e006 ("net: dsa: add new DSA switch driver for the SMSC-LAN9303")
Signed-off-by Mans Rullgard <[email protected]>
Reviewed-by Vladimir Oltean <[email protected]>
Signed-off-by Jakub Kicinski <[email protected]>
net/dsa/tag_lan9303.c +7 -14
@@ -77,7 +77,6 @@ static struct sk_buff *lan9303_xmit(struct sk_buff *skb, struct net_device *dev)static struct sk_buff *lan9303_rcv (struct sk_buff *skb,struct net_device *dev) { -__be16 *lan9303_tag;u16 lan9303_tag1;unsigned int source_port;
@@ -87,14 +86,15 @@ static struct sk_buff *lan9303_rcv(struct sk_buff *skb, struct net_device *dev)return NULL ; } - lan9303_tag =dsa_etype_header_pos_rx (skb); - -if (lan9303_tag[0 ] !=htons (ETH_P_8021Q )) { -dev_warn_ratelimited (&dev->dev,"Dropping packet due to invalid VLAN marker\n" ); -return NULL ; +if (skb_vlan_tag_present (skb)) { + lan9303_tag1 =skb_vlan_tag_get (skb); +__vlan_hwaccel_clear_tag (skb); + }else { +skb_push_rcsum (skb,ETH_HLEN ); +__skb_vlan_pop (skb, &lan9303_tag1); +skb_pull_rcsum (skb,ETH_HLEN ); } - lan9303_tag1 =ntohs (lan9303_tag[1 ]); source_port = lan9303_tag1 &0x3 ; skb->dev =dsa_master_find_slave (dev,0 , source_port);
@@ -103,13 +103,6 @@ static struct sk_buff *lan9303_rcv(struct sk_buff *skb, struct net_device *dev)return NULL ; } -/* remove the special VLAN tag between the MAC addresses -* and the current ethertype field. -*/ -skb_pull_rcsum (skb,2 +2 ); - -dsa_strip_etype_header (skb,LAN9303_TAG_LEN ); -if (!(lan9303_tag1 &LAN9303_TAG_RX_TRAPPED_TO_CPU ))dsa_default_offload_fwd_mark (skb);