From nobody Sat Oct 11 12:15:09 2025 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 770B71A8F97; Tue, 10 Jun 2025 16:32:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749573122; cv=none; b=Ya35C+aLUbeFuRhKXy1/xlkRQJgDOgA99BnnTYMgxJcjw3uPvxYUYJPz0kOcoJYE25u9yXPVn439IFq1Rge6bXuxDBWWuJV6ytjUziTzk1lruUcwaBwlEERdWP2319WGJirDty377jATLbkXyazNcxx7xvG8BxrF+rYf+SXVG/c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749573122; c=relaxed/simple; bh=oKuUnJOdyTt5QYsKpDJmDQ0Ynue2bYZJHgtQKoIC8HY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=ql8uxlJIshEz8ySHO+nGq3LytYcuLpD601dQGF6IvBnDAZ9w56VDkJlGDXFaR5F1U0LUkavYK8AlXwZUS2Q8GB4a4hfrtw+fSrggLKfWkPPNUX3XieOqO3JL1Nsbw91eZmL84e6xJoG7obJu4thrrycAzyZHW/zjjdpJWRY9ALM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=e7/g6eZH; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="e7/g6eZH" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-45310223677so21306805e9.0; Tue, 10 Jun 2025 09:32:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749573119; x=1750177919; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=F5ffzMm8LX4nteEPEkWfILdrn8NvmPzDjtR4ORcwrVM=; b=e7/g6eZHMMPo96MBScSdKF96y21vwwKgtVqkon3Ge/30FfhjVza3vhk5VmCl1fK/Vs WZBCg3FhgXx5XnXP91OB+BzKjLT3BLA6vkwJqDUKkQrEIUe1DeRUKPJBzzEHk4fF0UYW BoTx8uUkq2WeBnfiLlEumBAwyQwYDXzquT7sYWQ6ad6/mHZzCKa9WcwsM7RGe2eqUUoC ibVKC85S9TMYgNUws1/2CEyEeCoS13x8Vw6UfsLLjWenVld62i7kLvB1fPifBgprbbwA L/m9WxcidIHod39Ovm15e8voI6YXeNB6Jjj7tinaPLt/54GLazk5GoNBu6wRQbKwzx1w fj/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749573119; x=1750177919; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=F5ffzMm8LX4nteEPEkWfILdrn8NvmPzDjtR4ORcwrVM=; b=RaljsGKxIFyEJCQYMygw2DdRHqvWjM8rO6g5VqujxfvQUjes0PUuwKaivLUdkkrJl/ YowZeKxWxd+LoJ7NzHBpObVrIVbB2b9sfWBBm8QiJlljKopBrQsth3+aqdN9EEff7VAY e78Dv+z7AJYpa66T5bxkpvhXBU5/try2X2JnzlB8mPxkw+YwL6hvQTRF4NDvYvcuBizA sh7efAu36QJSbjtlRPARF+WrG1mGCmIMVm/1Vq1oGBmOY8wze195I5NbbyvI5scf8KSr b9g8a7VJ47RAPUWrVuxIXxx2X48rA06qADPRewBJREi8F/m4a8Mhb2A19BQlUqyGDV1x LYbg== X-Forwarded-Encrypted: i=1; AJvYcCVOAmfrAQZGXO/vhrFJ358gLQIScy9Y4718SyidwHWoqqWfPueWKgm5WDQGxbbdTd2vXNenCmuIS4cBnio=@vger.kernel.org, AJvYcCXzsxHIPklRIiDRPKDNZKctJWwZzKp7oyeausvkNcj9FlizHO9UBilAPd1O0ZeDk+3IVvtiRciT@vger.kernel.org X-Gm-Message-State: AOJu0YyUU78ioSCl8o8Qbw9VoARs2ZfpM69MuI8AgQDfrrM2P25fE290 uw38EugYO0KQuzu6BRlA83+AjysN3npwmW9M7+7O9fsaMmGRBi2YTCa1 X-Gm-Gg: ASbGnctKoxPdywc4xHvarx+Bsli+M5ZndZOcVY2N/V3l9BK+OVI0f7bjFRsog/6g4eu 7frHZq249PDUx10ktHccRhfFOH4V0N27+YYR0qORFW9jHgwXx1Zo9ziXWNpG8bi01QIvI6xKKLQ C/9Ly5piOfjSrhiNHL9TLv1m5HyZdaLGlWEE+p6v3g+7OOdvhN//2Z1IPxOoWoQqpE1l6xrSNqf eLubyOgrxGaIzz4+NiV3ru1zr0eKxOTnprFN5I5QgP7sH9scJdm3RnWrigN0D+v7ujQ6bxUKN+3 d2OQpJncPo+eE9ZX6YH8fyJaIZrVc/prGq5TxXWHuuxyTattW5luJ8iguGOTmzGR8SjSLOHOlI7 fU13PKl/KHBdmYgg16o6qox8DkSgItD6ZI7HDjzUAneOZ37rKe38jGiuAsgy4f4urVHTyyQdxmA == X-Google-Smtp-Source: AGHT+IG7RDzEfCGQ0NntVerhKNXz/vrfGnXLmtVGkkM/4pDSXycLY06qXCjC2dsrqoOp7Bm3GiHYvA== X-Received: by 2002:a05:600c:8b67:b0:43c:fdbe:4398 with SMTP id 5b1f17b1804b1-45201364da5mr151645115e9.6.1749573118477; Tue, 10 Jun 2025 09:31:58 -0700 (PDT) Received: from skynet.lan (2a02-9142-4580-1900-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1900::8]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a532435fa6sm12494857f8f.48.2025.06.10.09.31.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Jun 2025 09:31:57 -0700 (PDT) From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= To: jonas.gorski@gmail.com, florian.fainelli@broadcom.com, andrew@lunn.ch, olteanv@gmail.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, dgcbueu@gmail.com Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Subject: [PATCH net-next v2 1/3] net: dsa: tag_brcm: legacy: reorganize functions Date: Tue, 10 Jun 2025 18:31:52 +0200 Message-Id: <20250610163154.281454-2-noltari@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250610163154.281454-1-noltari@gmail.com> References: <20250610163154.281454-1-noltari@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Move brcm_leg_tag_rcv() definition to top. This function is going to be shared between two different tags. Signed-off-by: =C3=81lvaro Fern=C3=A1ndez Rojas Reviewed-by: Florian Fainelli --- net/dsa/tag_brcm.c | 64 +++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 32 deletions(-) v2: no changes diff --git a/net/dsa/tag_brcm.c b/net/dsa/tag_brcm.c index fe75821623a4f..9f4b0bcd95cde 100644 --- a/net/dsa/tag_brcm.c +++ b/net/dsa/tag_brcm.c @@ -213,6 +213,38 @@ MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM, BRCM_N= AME); #endif =20 #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY) +static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb, + struct net_device *dev) +{ + int len =3D BRCM_LEG_TAG_LEN; + int source_port; + u8 *brcm_tag; + + if (unlikely(!pskb_may_pull(skb, BRCM_LEG_TAG_LEN + VLAN_HLEN))) + return NULL; + + brcm_tag =3D dsa_etype_header_pos_rx(skb); + + source_port =3D brcm_tag[5] & BRCM_LEG_PORT_ID; + + skb->dev =3D dsa_conduit_find_user(dev, 0, source_port); + if (!skb->dev) + return NULL; + + /* VLAN tag is added by BCM63xx internal switch */ + if (netdev_uses_dsa(skb->dev)) + len +=3D VLAN_HLEN; + + /* Remove Broadcom tag and update checksum */ + skb_pull_rcsum(skb, len); + + dsa_default_offload_fwd_mark(skb); + + dsa_strip_etype_header(skb, len); + + return skb; +} + static struct sk_buff *brcm_leg_tag_xmit(struct sk_buff *skb, struct net_device *dev) { @@ -250,38 +282,6 @@ static struct sk_buff *brcm_leg_tag_xmit(struct sk_buf= f *skb, return skb; } =20 -static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb, - struct net_device *dev) -{ - int len =3D BRCM_LEG_TAG_LEN; - int source_port; - u8 *brcm_tag; - - if (unlikely(!pskb_may_pull(skb, BRCM_LEG_TAG_LEN + VLAN_HLEN))) - return NULL; - - brcm_tag =3D dsa_etype_header_pos_rx(skb); - - source_port =3D brcm_tag[5] & BRCM_LEG_PORT_ID; - - skb->dev =3D dsa_conduit_find_user(dev, 0, source_port); - if (!skb->dev) - return NULL; - - /* VLAN tag is added by BCM63xx internal switch */ - if (netdev_uses_dsa(skb->dev)) - len +=3D VLAN_HLEN; - - /* Remove Broadcom tag and update checksum */ - skb_pull_rcsum(skb, len); - - dsa_default_offload_fwd_mark(skb); - - dsa_strip_etype_header(skb, len); - - return skb; -} - static const struct dsa_device_ops brcm_legacy_netdev_ops =3D { .name =3D BRCM_LEGACY_NAME, .proto =3D DSA_TAG_PROTO_BRCM_LEGACY, --=20 2.39.5 From nobody Sat Oct 11 12:15:09 2025 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A9D13241670; Tue, 10 Jun 2025 16:32:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749573123; cv=none; b=Hg8d3zVqBKOpbPfGWVbp/5XLfVB3BBVFaLfXMq4PR4r0EXURU3IbOnDosV6l/s7Y1f3RzVX7OsSgFGPp/g0k7lXeJvxpzL1R0+scK+aGVknVyxoT0mEZ0nsA9kB6t/OaW3s7U7gvl8uPg78YtgxckePXR/4I3uX6pob4pNpiSbM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749573123; c=relaxed/simple; bh=69Ph4qN5AbrieLOuNLe0CycEnwhgvHagqWcWERsJcGU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=fj3IMm4DM1tr1lC6VjJkqb0ikosBqR/M97Jbmst0HkDb0nr8HcJ7SeVQbqUuwZNrNnqgx44Xf69lWw2TXLSUlLQP6fu029l6JQdhEL/D/HMhezIRTBNzvdXR1+s8rIVnhzQ9QrbbxBbd8cQo5iRHBXcQT0DqRX29gO+oVB6vSzg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nSsPpxCu; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nSsPpxCu" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-441ab63a415so59348495e9.3; Tue, 10 Jun 2025 09:32:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749573120; x=1750177920; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Y4MJjtgDSJ5yuAT0IXtcih6B+H1GEhUVeCOcySAr2TI=; b=nSsPpxCuFzJ4wFITScMhjs/Er6Rg5+cTCdK4zqi4cJtMZ1/7N2cl/eToyEP9iqDCtC +xNSo2YAcAykJmS9nTB/TYXHG/tmLnvh8T4RmOVikTGVLSwjyMRJ4qoPyGjN/8Lgef1U KnATVFkIGHOya82SvdP2xrLCFdnwOPHUaDnCmAP4ptlH8iNAmUI5cagshkiKVvMOLnH4 HAElYwUtMBoWRWoiI3skuNZPsDIr9nbAD1/WQ53SpyJD5x2AoiQCRIBzmK+hXYsHV+cb n42hXRflTkRLO3axA05Xhv5oWv8KntOzpB7PjNMTYTmnOqbOTKubg/RV8Z405UHa8rPN 7y5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749573120; x=1750177920; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Y4MJjtgDSJ5yuAT0IXtcih6B+H1GEhUVeCOcySAr2TI=; b=btw6XAsNERw9boYSejP1H+6nvnzbZ1yDPPWVdjsKGLnCniZv4zG02PrPav1Z84Lcwj HiAM7Ecsf8A33GTMvsOUMJUZxtrjz/AZ1WqhQRvqgOpZQVapm5AP00YF2CoRz2twVUPh OP3R4Jw1nh+14dq8xpJlQV1q1/FGnUtbJYAnJOYH8HF28VBiETQ3hFBV1ckdL+KY3AYv hBBw4WPPYFL0G4+AYq5a108j4UMSsHoy2Cz5bRKOz8boPVmfwJM7edOod29BIOj5fcSr z3W+n9dPDReb8dJkK7wF+Foo+I6Cf2zxXhIihnRdDOkHzhEjmJKhnZiEudmWzBBqas6x Rn+g== X-Forwarded-Encrypted: i=1; AJvYcCUyDPevyMZKdj+KJLBqUss6P6AE0kuJQuxfz+AowLgCXXVUDWyindLhtDofgSCTXGPvG90W7aS2@vger.kernel.org, AJvYcCVk/RcfQdrqOyyE0hUGyreWaAWMT+YkYFmbHL9xr+69Wo1eGFxyLv84AQ2fLOH33LNZEP2ZwP7lkJdXiPU=@vger.kernel.org X-Gm-Message-State: AOJu0Yw/uw9Mj3weEaPWkGj8MoBdrYXByluXbokpz36cf8v71xOWFYkW lZ8ZH8VT13g/7PMDWJqzvDI8iX6wUGfZOcfWtYv+Jwuk/89HAEyNnuZq X-Gm-Gg: ASbGncv3yCz5rXr5tJkbqSxE1ZQIvKTGTMJP7TgDSrSMkyAEXK2I1fki80VgKeewSjP pmCRTZPOE+1n08AkbfShS438CZR94poPu3Gp9VRuWiCr+rO8gcSPuDod1cnvSJ70s+EWiNoNNg9 /AwPUNPhLrtGhIVkDif39x6JKyy7BHlZIWLDiv0ighAGmn91c81ymxkAKN9Fd74EMlDmiYe7zRX NPrIgs9YxAyGSF4CjSWEyOm7HxszD/JlntVLXM+6ENx8LPJ9WvFr6m+l4SoQzD4IPHKOvYtj9WY bHllGs38MeD2MqUov/MupOLGOF2wB1wnY2hMRLkBu308fkK2OutZCO+MFEvf8fblzVEI3C12xvw 0QaFEctOHQCDJgrFY2Rr798NiQTk+qpGuxFQHd8mGIwmzoOdML0Os2J9HJ6sGqj0= X-Google-Smtp-Source: AGHT+IFwl4qYzXd3CIV23prGLSwvqxAnPYNbmC9hCSF3eqN6eJ45zy/iCjrcI9iUx3voe7oSkdEtpA== X-Received: by 2002:a05:6000:26ca:b0:3a5:2949:6c38 with SMTP id ffacd0b85a97d-3a5522ddd75mr2829526f8f.52.1749573119784; Tue, 10 Jun 2025 09:31:59 -0700 (PDT) Received: from skynet.lan (2a02-9142-4580-1900-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1900::8]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a532435fa6sm12494857f8f.48.2025.06.10.09.31.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Jun 2025 09:31:59 -0700 (PDT) From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= To: jonas.gorski@gmail.com, florian.fainelli@broadcom.com, andrew@lunn.ch, olteanv@gmail.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, dgcbueu@gmail.com Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Subject: [PATCH net-next v2 2/3] net: dsa: tag_brcm: add support for legacy FCS tags Date: Tue, 10 Jun 2025 18:31:53 +0200 Message-Id: <20250610163154.281454-3-noltari@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250610163154.281454-1-noltari@gmail.com> References: <20250610163154.281454-1-noltari@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Add support for legacy Broadcom FCS tags, which are similar to DSA_TAG_PROTO_BRCM_LEGACY. BCM5325 and BCM5365 switches require including the original FCS value and length, as opposed to BCM63xx switches. Adding the original FCS value and length to DSA_TAG_PROTO_BRCM_LEGACY would impact performance of BCM63xx switches, so it's better to create a new tag. Signed-off-by: =C3=81lvaro Fern=C3=A1ndez Rojas --- include/net/dsa.h | 2 ++ net/dsa/Kconfig | 8 +++++ net/dsa/tag_brcm.c | 73 +++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 82 insertions(+), 1 deletion(-) v2: replace swab32 with cpu_to_le32. diff --git a/include/net/dsa.h b/include/net/dsa.h index 55e2d97f247eb..d73ea08800660 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -54,11 +54,13 @@ struct tc_action; #define DSA_TAG_PROTO_RZN1_A5PSW_VALUE 26 #define DSA_TAG_PROTO_LAN937X_VALUE 27 #define DSA_TAG_PROTO_VSC73XX_8021Q_VALUE 28 +#define DSA_TAG_PROTO_BRCM_LEGACY_FCS_VALUE 29 =20 enum dsa_tag_protocol { DSA_TAG_PROTO_NONE =3D DSA_TAG_PROTO_NONE_VALUE, DSA_TAG_PROTO_BRCM =3D DSA_TAG_PROTO_BRCM_VALUE, DSA_TAG_PROTO_BRCM_LEGACY =3D DSA_TAG_PROTO_BRCM_LEGACY_VALUE, + DSA_TAG_PROTO_BRCM_LEGACY_FCS =3D DSA_TAG_PROTO_BRCM_LEGACY_FCS_VALUE, DSA_TAG_PROTO_BRCM_PREPEND =3D DSA_TAG_PROTO_BRCM_PREPEND_VALUE, DSA_TAG_PROTO_DSA =3D DSA_TAG_PROTO_DSA_VALUE, DSA_TAG_PROTO_EDSA =3D DSA_TAG_PROTO_EDSA_VALUE, diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig index 2dfe9063613fe..e6696e8212cf3 100644 --- a/net/dsa/Kconfig +++ b/net/dsa/Kconfig @@ -49,6 +49,14 @@ config NET_DSA_TAG_BRCM_LEGACY Broadcom legacy switches which place the tag after the MAC source address. =20 +config NET_DSA_TAG_BRCM_LEGACY_FCS + tristate "Tag driver for Broadcom legacy switches using in-frame headers,= FCS and length" + select NET_DSA_TAG_BRCM_COMMON + help + Say Y if you want to enable support for tagging frames for the + Broadcom legacy switches which place the tag after the MAC source + address and require the original FCS and length. + config NET_DSA_TAG_BRCM_PREPEND tristate "Tag driver for Broadcom switches using prepended headers" select NET_DSA_TAG_BRCM_COMMON diff --git a/net/dsa/tag_brcm.c b/net/dsa/tag_brcm.c index 9f4b0bcd95cde..fff05ed3318f7 100644 --- a/net/dsa/tag_brcm.c +++ b/net/dsa/tag_brcm.c @@ -15,6 +15,7 @@ =20 #define BRCM_NAME "brcm" #define BRCM_LEGACY_NAME "brcm-legacy" +#define BRCM_LEGACY_FCS_NAME "brcm-legacy-fcs" #define BRCM_PREPEND_NAME "brcm-prepend" =20 /* Legacy Broadcom tag (6 bytes) */ @@ -32,6 +33,10 @@ #define BRCM_LEG_MULTICAST (1 << 5) #define BRCM_LEG_EGRESS (2 << 5) #define BRCM_LEG_INGRESS (3 << 5) +#define BRCM_LEG_LEN_HI(x) (((x) >> 8) & 0x7) + +/* 4th byte in the tag */ +#define BRCM_LEG_LEN_LO(x) ((x) & 0xff) =20 /* 6th byte in the tag */ #define BRCM_LEG_PORT_ID (0xf) @@ -212,7 +217,8 @@ DSA_TAG_DRIVER(brcm_netdev_ops); MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM, BRCM_NAME); #endif =20 -#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY) +#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY) || \ + IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS) static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb, struct net_device *dev) { @@ -244,7 +250,9 @@ static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff = *skb, =20 return skb; } +#endif /* CONFIG_NET_DSA_TAG_BRCM_LEGACY || CONFIG_NET_DSA_TAG_BRCM_LEGACY= _FCS */ =20 +#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY) static struct sk_buff *brcm_leg_tag_xmit(struct sk_buff *skb, struct net_device *dev) { @@ -294,6 +302,66 @@ DSA_TAG_DRIVER(brcm_legacy_netdev_ops); MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM_LEGACY, BRCM_LEGACY_NAME); #endif /* CONFIG_NET_DSA_TAG_BRCM_LEGACY */ =20 +#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS) +static struct sk_buff *brcm_leg_fcs_tag_xmit(struct sk_buff *skb, + struct net_device *dev) +{ + struct dsa_port *dp =3D dsa_user_to_port(dev); + unsigned int fcs_len; + u32 fcs_val; + u8 *brcm_tag; + + /* The Ethernet switch we are interfaced with needs packets to be at + * least 64 bytes (including FCS) otherwise they will be discarded when + * they enter the switch port logic. When Broadcom tags are enabled, we + * need to make sure that packets are at least 70 bytes + * (including FCS and tag) because the length verification is done after + * the Broadcom tag is stripped off the ingress packet. + * + * Let dsa_user_xmit() free the SKB + */ + if (__skb_put_padto(skb, ETH_ZLEN + BRCM_LEG_TAG_LEN, false)) + return NULL; + + fcs_len =3D skb->len; + fcs_val =3D cpu_to_le32(crc32(~0, skb->data, fcs_len) ^ ~0); + + skb_push(skb, BRCM_LEG_TAG_LEN); + + dsa_alloc_etype_header(skb, BRCM_LEG_TAG_LEN); + + brcm_tag =3D skb->data + 2 * ETH_ALEN; + + /* Broadcom tag type */ + brcm_tag[0] =3D BRCM_LEG_TYPE_HI; + brcm_tag[1] =3D BRCM_LEG_TYPE_LO; + + /* Broadcom tag value */ + brcm_tag[2] =3D BRCM_LEG_EGRESS | BRCM_LEG_LEN_HI(fcs_len); + brcm_tag[3] =3D BRCM_LEG_LEN_LO(fcs_len); + brcm_tag[4] =3D 0; + brcm_tag[5] =3D dp->index & BRCM_LEG_PORT_ID; + + /* Original FCS value */ + if (__skb_pad(skb, ETH_FCS_LEN, false)) + return NULL; + skb_put_data(skb, &fcs_val, ETH_FCS_LEN); + + return skb; +} + +static const struct dsa_device_ops brcm_legacy_fcs_netdev_ops =3D { + .name =3D BRCM_LEGACY_FCS_NAME, + .proto =3D DSA_TAG_PROTO_BRCM_LEGACY_FCS, + .xmit =3D brcm_leg_fcs_tag_xmit, + .rcv =3D brcm_leg_tag_rcv, + .needed_headroom =3D BRCM_LEG_TAG_LEN, +}; + +DSA_TAG_DRIVER(brcm_legacy_fcs_netdev_ops); +MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM_LEGACY_FCS, BRCM_LEGACY_FCS= _NAME); +#endif /* CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS */ + #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_PREPEND) static struct sk_buff *brcm_tag_xmit_prepend(struct sk_buff *skb, struct net_device *dev) @@ -328,6 +396,9 @@ static struct dsa_tag_driver *dsa_tag_driver_array[] = =3D { #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY) &DSA_TAG_DRIVER_NAME(brcm_legacy_netdev_ops), #endif +#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS) + &DSA_TAG_DRIVER_NAME(brcm_legacy_fcs_netdev_ops), +#endif #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_PREPEND) &DSA_TAG_DRIVER_NAME(brcm_prepend_netdev_ops), #endif --=20 2.39.5 From nobody Sat Oct 11 12:15:09 2025 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D3570242D6B; Tue, 10 Jun 2025 16:32:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749573124; cv=none; b=Td8aqR0gRZ0p2kl6Lyu9YGhtlWA9f+OSP2g6FJM0Kh+jxhnCwpdV3f2YbuNls0kiWbKp/tDIlO9dV52u/IhRQKr36gIw7xaG+xJCX224mLsWZhYKdVzgR4f4eQ9u7SV7w87b6mQ3+c0a7zCMbdtusSoyPfWZGuUW5Pk3nacrRAs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749573124; c=relaxed/simple; bh=hNuCDM0jUQWKqc6R9z3C05bZeqq7L3xWaTOLAJKfXZM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=qchqiNcQ0w0ZBOWUxmqdl6unvyiBdqEPySJ7lks2bN3wv0Wdt4Z1kr311OBXQlwdkWtCVaUPShPTuzPJnzB2byddnn8FxAzvPhBPJmrPp1RhSpqL68VvFxjo30BGXMJrfXkMkjQSQo/TISgwVC10iurh8zREtp9RmGywEhiluYc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=DPeglLck; arc=none smtp.client-ip=209.85.128.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DPeglLck" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-43edecbfb94so68549545e9.1; Tue, 10 Jun 2025 09:32:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1749573121; x=1750177921; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4ZI48i2uXHjCqf8G8iB6bi5iAlWdT2du2T86rodgrys=; b=DPeglLckwP1XLfp28/u0TKqOFl6d1YIwjc2ujup3MyhqoiuhBibTZn0DePpNI/RIOo ESEJ/UkSzSW/C+gsi5i8bC0NiVO7FaOzlsUSf7aN+k+T7S6aJRELhDkhAQY7ID2Ohp4Q uEVR7moEaU9++QasUPwrO0YUHdhkuXqZHNhBxYyIYFbbmJ6717/svEzcaXvL8NM48dWV 71oVKyFi/n0zg1iPV1Coyvjc/wasbdo6nnUcnpJml2HOeZ08U7PC1TUwZAUx1hZGCrVw C6FW3E1OydX73Eao54nXnJR6AERfEHqePFKDrVM3/xLnAlbb2+Z/Jac359aZL1MvCshM rkkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749573121; x=1750177921; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4ZI48i2uXHjCqf8G8iB6bi5iAlWdT2du2T86rodgrys=; b=sxh48ba7WOM1Kwp/5zQ0ByOQ8scO0lxhBz1YgO1akTPPcWkhzvigrUkGUUp+5JfE2p iXk3nOLqESYdtyCqJPVwBdIaWRG94fiEpKj1Omkz8b77SFsLel3fZq9WryUKnKWktTph mc1Sl/lHzaulsCk5ywSbaod92WETCQg6cC4aLLe30FpxYRA9g0GVCR4ul6BVaWf3Grxr sojTG9RGAMC8/39w0c0lluCeg2ZgfSoKsiSPYuQj2HLBT3VgIhFTXb9kmg/sAsCiscWb h881GGKPjOFt/0Mx9UcFohaXKPooK/lHb7f9ifVJwIQttpd+7gYqrMbAvV5YLw+MMUnf +4cw== X-Forwarded-Encrypted: i=1; AJvYcCVhAnFA0qGkzt424VEJHtCXyNIZI3yaEfHJ0+0/SXwA/Pl5qHgOZL2sCR9orZeH0X0dHi8/73IT@vger.kernel.org, AJvYcCX1l9HNa448BCi0pqhGEZVulPuL6cwtcs/kGX/0AENEuqlF1kWerHge6Vq2MAEttnUUSA2tvpCOM8wc6J4=@vger.kernel.org X-Gm-Message-State: AOJu0YyWBOeX89dS9JL+HObHA3lHl4HRWKd+cKZr1I4ZAmLCnLTyJyG6 7EDWVk6LBdGH9dI577G2ZZ4YcPZXhQSCniFns5JvpBpFnfBbM2fmNPpc X-Gm-Gg: ASbGncu7Y1hCOdWxfe2HNGxweve1XBYEM5yNY636sbtkscij5MWRmZh0eEVcdDlDee7 HUUfbIGw2nNTRl1eKahcL1J4KptJXma74iX2QQoSkAbg9mJ4fOiwmkmagt+YtI74focCqyAyfGB C5m4fdovsNXfInbkXrzi/EAiMkyXM5EDsSirBonF3Vnja6AMjPdzxAm2dfgPbI96a7AHg6TXYXw v7nk9CVNeSP92wWWUNgosQ15mKWvK3Ec5E4CQRvuTAB5L8uch7M+ecwr0WV/8XLqI1B5RtdP8ku 1ZnLewij8k9G8YOQZNl7RH+p0Yfg0V8AVUoiPct2BSfrsSjpJUVVUXsRoCwpmk3lJ/O3e+vKKo6 K7LJqIIBaNVVSyI21vG4ERB+doEKdlYmOa/2bEAKfVyk9P3S+EQifN2Wew8iq+oI= X-Google-Smtp-Source: AGHT+IFvZxxK+tyRgFocFz3UtSFmfIb+tEX2An49P06Lo+Ypw8FLZLGdUNwpZKVta0rbMtZE8oRa2Q== X-Received: by 2002:a05:600c:a00e:b0:43d:ac5:11e8 with SMTP id 5b1f17b1804b1-452013d7e0emr162270725e9.21.1749573120948; Tue, 10 Jun 2025 09:32:00 -0700 (PDT) Received: from skynet.lan (2a02-9142-4580-1900-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1900::8]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a532435fa6sm12494857f8f.48.2025.06.10.09.31.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Jun 2025 09:32:00 -0700 (PDT) From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= To: jonas.gorski@gmail.com, florian.fainelli@broadcom.com, andrew@lunn.ch, olteanv@gmail.com, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, dgcbueu@gmail.com Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Subject: [PATCH net-next v2 3/3] net: dsa: b53: support legacy FCS tags Date: Tue, 10 Jun 2025 18:31:54 +0200 Message-Id: <20250610163154.281454-4-noltari@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250610163154.281454-1-noltari@gmail.com> References: <20250610163154.281454-1-noltari@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Commit 46c5176c586c ("net: dsa: b53: support legacy tags") introduced support for legacy tags, but it turns out that BCM5325 and BCM5365 switches require the original FCS value and length, so they have to be treated differently. Fixes: 46c5176c586c ("net: dsa: b53: support legacy tags") Signed-off-by: =C3=81lvaro Fern=C3=A1ndez Rojas Reviewed-by: Florian Fainelli --- drivers/net/dsa/b53/Kconfig | 1 + drivers/net/dsa/b53/b53_common.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) v2: no changes diff --git a/drivers/net/dsa/b53/Kconfig b/drivers/net/dsa/b53/Kconfig index ebaa4a80d5444..915008e8eff53 100644 --- a/drivers/net/dsa/b53/Kconfig +++ b/drivers/net/dsa/b53/Kconfig @@ -5,6 +5,7 @@ menuconfig B53 select NET_DSA_TAG_NONE select NET_DSA_TAG_BRCM select NET_DSA_TAG_BRCM_LEGACY + select NET_DSA_TAG_BRCM_LEGACY_FCS select NET_DSA_TAG_BRCM_PREPEND help This driver adds support for Broadcom managed switch chips. It supports diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index 862bdccb74397..222107223d109 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -2245,8 +2245,11 @@ enum dsa_tag_protocol b53_get_tag_protocol(struct ds= a_switch *ds, int port, goto out; } =20 - /* Older models require a different 6 byte tag */ - if (is5325(dev) || is5365(dev) || is63xx(dev)) { + /* Older models require different 6 byte tags */ + if (is5325(dev) || is5365(dev)) { + dev->tag_protocol =3D DSA_TAG_PROTO_BRCM_LEGACY_FCS; + goto out; + } else if (is63xx(dev)) { dev->tag_protocol =3D DSA_TAG_PROTO_BRCM_LEGACY; goto out; } --=20 2.39.5