bmips: sercomm,h500-s: fix upgrade
[openwrt/openwrt.git] / target / linux / generic / pending-5.15 / 771-net-dsa-tag_brcm-legacy-fix-daisy-chained-switches.patch
1 From patchwork Sun Mar 19 09:55:40 2023
2 Content-Type: text/plain; charset="utf-8"
3 MIME-Version: 1.0
4 Content-Transfer-Encoding: 8bit
5 X-Patchwork-Submitter: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?=
6 <noltari@gmail.com>
7 X-Patchwork-Id: 13180301
8 X-Patchwork-Delegate: kuba@kernel.org
9 Return-Path: <netdev-owner@vger.kernel.org>
10 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on
11 aws-us-west-2-korg-lkml-1.web.codeaurora.org
12 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18])
13 by smtp.lore.kernel.org (Postfix) with ESMTP id 59CF8C7618A
14 for <netdev@archiver.kernel.org>; Sun, 19 Mar 2023 09:55:59 +0000 (UTC)
15 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
16 id S229723AbjCSJzz (ORCPT <rfc822;netdev@archiver.kernel.org>);
17 Sun, 19 Mar 2023 05:55:55 -0400
18 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33746 "EHLO
19 lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
20 with ESMTP id S229468AbjCSJzv (ORCPT
21 <rfc822;netdev@vger.kernel.org>); Sun, 19 Mar 2023 05:55:51 -0400
22 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com
23 [IPv6:2a00:1450:4864:20::333])
24 by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 83BCD23A6E;
25 Sun, 19 Mar 2023 02:55:49 -0700 (PDT)
26 Received: by mail-wm1-x333.google.com with SMTP id
27 l15-20020a05600c4f0f00b003ed58a9a15eso5776403wmq.5;
28 Sun, 19 Mar 2023 02:55:49 -0700 (PDT)
29 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
30 d=gmail.com; s=20210112; t=1679219748;
31 h=content-transfer-encoding:mime-version:references:in-reply-to
32 :message-id:date:subject:cc:to:from:from:to:cc:subject:date
33 :message-id:reply-to;
34 bh=yaNuTTfeHI1WnGa3QC7carZ37ibM4EyUyUnDDBSr6nM=;
35 b=bTf0pdvAUXMqrJw4A+PLFfwONMAaXL3S4GDMJH3tYgRz/0Vpy7FkmgpWveMhjrqiDM
36 O6v17DizCYtzUrLXC9z9mMD3F8tl0SETaor8aE/MtvnxVq/Yq80WT5xnEh0iJBhWnRP1
37 0ZKyuoqWZQPnQ9vXbctEu3ZPxub9szdfmxWCtutESvAIvY7Y1qt4ZGg4ZDexov88P4lN
38 pgP6KaBNSVKSsVlDL4ukHqWyrkzpPtcOmDrPC8/HUTsraFnQ4iOL8vVR2Q26qKf2JI6m
39 yKwAd88ZKSnFRAyGdXAoXqiAKkcmDW5523samaxmBI23gxG5ryD3JnZBlo5r55gnPGo9
40 C0uQ==
41 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
42 d=1e100.net; s=20210112; t=1679219748;
43 h=content-transfer-encoding:mime-version:references:in-reply-to
44 :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
45 :subject:date:message-id:reply-to;
46 bh=yaNuTTfeHI1WnGa3QC7carZ37ibM4EyUyUnDDBSr6nM=;
47 b=buUr8oNY3Rb4YRuvXOFLPRXT0v9e8f87X1i1bsLfYPL/CokAJIhwAaChGjvMN1l3zP
48 YCfM9Xynl3tF3k4nrb1xKGmc7LuHONe8KjOgFgFuvtepBg7uvBdwi7A3UmbznhgUpzlo
49 HE7X3S5dfDNX/LLwpOyWM34Hk+w6i6pXP2FD7CB/1TwvdZFjnPHbhDhQTnJQNFaFmXz2
50 d4WxBzxqU6k+4PC4AHRhGkn8QunICQ90MDk9NgNtuT5E1tTh5Bz4ykQ95sKKeTih3OBO
51 sx0mBrCqsTwpteTweNvnMuoOxmyKbM8Ca8cwS1QpfIWI0ASy+j7j2SiTG7nrKl2hUJTW
52 heAQ==
53 X-Gm-Message-State: AO0yUKWVY0SzDxRYNSJrKpnV6m176lCPK8B2N12aX56FfpuGNCuaPAmf
54 wYaBrXYVORDSYFVtNsY7gc3xMZp1z+ba7A==
55 X-Google-Smtp-Source:
56 AK7set8q+UMyrNpNNfcRo8o3ynviTGRk1oKu2CmzwYJVZxCAYYvXmLtyXvhcnqpBROVi7Kj+1rKDuw==
57 X-Received: by 2002:a05:600c:4f50:b0:3ed:4b0f:5378 with SMTP id
58 m16-20020a05600c4f5000b003ed4b0f5378mr11519857wmq.27.1679219747816;
59 Sun, 19 Mar 2023 02:55:47 -0700 (PDT)
60 Received: from atlantis.lan (255.red-79-146-124.dynamicip.rima-tde.net.
61 [79.146.124.255])
62 by smtp.gmail.com with ESMTPSA id
63 i26-20020a1c541a000000b003ed246f76a2sm13390609wmb.1.2023.03.19.02.55.46
64 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
65 Sun, 19 Mar 2023 02:55:47 -0700 (PDT)
66 From: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= <noltari@gmail.com>
67 To: andrew@lunn.ch, f.fainelli@gmail.com, jonas.gorski@gmail.com,
68 olteanv@gmail.com, davem@davemloft.net, edumazet@google.com,
69 kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org,
70 linux-kernel@vger.kernel.org
71 Cc: =?utf-8?q?=C3=81lvaro_Fern=C3=A1ndez_Rojas?= <noltari@gmail.com>,
72 Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
73 Subject: [PATCH v2] net: dsa: tag_brcm: legacy: fix daisy-chained switches
74 Date: Sun, 19 Mar 2023 10:55:40 +0100
75 Message-Id: <20230319095540.239064-1-noltari@gmail.com>
76 X-Mailer: git-send-email 2.30.2
77 In-Reply-To: <20230317120815.321871-1-noltari@gmail.com>
78 References: <20230317120815.321871-1-noltari@gmail.com>
79 MIME-Version: 1.0
80 Precedence: bulk
81 List-ID: <netdev.vger.kernel.org>
82 X-Mailing-List: netdev@vger.kernel.org
83 X-Patchwork-Delegate: kuba@kernel.org
84
85 When BCM63xx internal switches are connected to switches with a 4-byte
86 Broadcom tag, it does not identify the packet as VLAN tagged, so it adds one
87 based on its PVID (which is likely 0).
88 Right now, the packet is received by the BCM63xx internal switch and the 6-byte
89 tag is properly processed. The next step would to decode the corresponding
90 4-byte tag. However, the internal switch adds an invalid VLAN tag after the
91 6-byte tag and the 4-byte tag handling fails.
92 In order to fix this we need to remove the invalid VLAN tag after the 6-byte
93 tag before passing it to the 4-byte tag decoding.
94
95 Fixes: 964dbf186eaa ("net: dsa: tag_brcm: add support for legacy tags")
96 Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
97 Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
98 ---
99 v2: add missing fixes tag.
100
101 net/dsa/tag_brcm.c | 10 ++++++++--
102 1 file changed, 8 insertions(+), 2 deletions(-)
103
104 --- a/net/dsa/tag_brcm.c
105 +++ b/net/dsa/tag_brcm.c
106 @@ -7,6 +7,7 @@
107
108 #include <linux/dsa/brcm.h>
109 #include <linux/etherdevice.h>
110 +#include <linux/if_vlan.h>
111 #include <linux/list.h>
112 #include <linux/slab.h>
113
114 @@ -248,6 +249,7 @@ static struct sk_buff *brcm_leg_tag_xmit
115 static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb,
116 struct net_device *dev)
117 {
118 + int len = BRCM_LEG_TAG_LEN;
119 int source_port;
120 u8 *brcm_tag;
121
122 @@ -262,12 +264,16 @@ static struct sk_buff *brcm_leg_tag_rcv(
123 if (!skb->dev)
124 return NULL;
125
126 + /* VLAN tag is added by BCM63xx internal switch */
127 + if (netdev_uses_dsa(skb->dev))
128 + len += VLAN_HLEN;
129 +
130 /* Remove Broadcom tag and update checksum */
131 - skb_pull_rcsum(skb, BRCM_LEG_TAG_LEN);
132 + skb_pull_rcsum(skb, len);
133
134 dsa_default_offload_fwd_mark(skb);
135
136 - dsa_strip_etype_header(skb, BRCM_LEG_TAG_LEN);
137 + dsa_strip_etype_header(skb, len);
138
139 return skb;
140 }