From nobody Tue Dec 16 22:12:45 2025 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 E45A979C0; Sat, 31 May 2025 06:46:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748674005; cv=none; b=cOuri3djImWIZZnu0FpnUkBIAOGVkdjL+QEdSUskNE4SBhxSeQLUHlStD9PSKMfMQUzY9Spsph6jL7Hg9f4UttTKCpyzxne7Bce93rL7773DODxSZHIOKMKrY/zj8giDbVZHMUdJTNnV4i88nG5vUHmkWltWjMJ9VqIiJZSGSoQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748674005; c=relaxed/simple; bh=uY3ybQBRlyKlkk5YyiDoD/dFx1qg3hOhVp7GVoN1+zs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=ZffU4x8uFJa4hvfQGEcw3n/ZOGtu1Jcr/wp7C8I9xq1fkyTK+Q/SjHrdR0BuFcgLlL8xioBFk54XWBXfk386Re2W/mGUPyH3PCT5EE8KntDUR1qXGqeiZj/Eehz2Q1lPDwtM4YpeLWVuzS51ua0/cdHVAZ7P3fAe6UTyX3Y2564= 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=YkXxnmBQ; arc=none smtp.client-ip=209.85.128.52 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="YkXxnmBQ" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-450caff6336so15238535e9.3; Fri, 30 May 2025 23:46:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748674001; x=1749278801; 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=2qmGcbU9HcKIOJQ6ijcuImiKtiHIykIXxgbnKg5TgaU=; b=YkXxnmBQ1yNxkGvcN3YjJeGsoVn4fvs3Hmf9PfZzm4x12mahLdmVZEpDvKiEvSbH1C wM3UuwBwwMJE7pdZM7n12R+AlY/QNztEjXQ9IG+M8VoOSniW7g7Wu+J7YtvnkSbPQxJg BD+3dmjRqivqPfYbGw18792WdcGv1wzg8f2ysQMGS4yCWjH6EbI6Q+iFtMFrUQGMlMWu bASbwzumzRPYNlLtD2FxfiR2e/pbK04WkZnN9eK6QgRO6LL8t3L6qvkGXoDfQA3C5S7x HxqqlIZnk/wiY/27yuvqMJ3lMiEy94bfESLTV2kTKiWn1qPxZlWvE+/M9bdHpV80gyDk hqGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748674001; x=1749278801; 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=2qmGcbU9HcKIOJQ6ijcuImiKtiHIykIXxgbnKg5TgaU=; b=UjrSr6HDkUDAseKwSl8r9LnfuD3pAdkavxXM/xwi8F3GMPDJbOu84sviWcyS6Ia/od ubpZFmUrpFe2R3hxTXgfyeBZ61hxr88cR7B1jy+WtfU+r3YIhHy/bRm5xwOX2MJJYOsP iocFOO/QQ2btV/zUTeKzmA/6V1AZxfWJh6mF71bRDn9INgQZNUOy7EFaAsFLT7M/HDrT iamytwC+FoozGxnwTot4RC+e2MWcPm8Qcpq3fnxmkBrr/ycA8LZFpwhRKzDLz2zNm19p Sg9Zu6TRFguAW3kusT4VBBAJc0ijox0vn3KNL/PiBQPLPMyd2rA1v9cve1zDK/ziRrVg SmcA== X-Forwarded-Encrypted: i=1; AJvYcCX5HOu4/3w6DRCSkD5WdUTu7P27k05sz6WtqhJtvj3W04NNTAd7XAMSi975jC3A+3ttfuqGycyw@vger.kernel.org, AJvYcCXQbo2OfdPaBJBJdJQzUAjM1c5bdd57Zf0dIA6Z8vHGo9q6jxzAiCTEchnBv+LhpXPFn7zPC4lQQCq2qZs=@vger.kernel.org X-Gm-Message-State: AOJu0Yyh4Qw6oLJ8v8AQjWoLt+eoDjx6ntIBZpTuYRY8hh4BvVKnCeiU 4LqG/nNRJDnFC82jOyddh5VTZFCdg9wwnd6BWeZNrl61kLqdvt2eb+1Y X-Gm-Gg: ASbGncsCcvtTKzBGxpUcbyLGmc5x0u8wYd+/z8yCpKLRK20moBt27PY57tb6USYprVK ybUVa/IyAM8nzIKxpMPVBPVroarBWlYPETaPgqaz/opiLS6/MqG2quRUedBFfJc7ykdDr0zxGFO KuTgnTbCm2Q1ZV+ooVbdY9kJXoevscwINt3vCVGtwWAqYAQtGbvandzQ6plttjB3xiySFEzG90S NrWo+EChXvTxPwlxPSjFePOqkzl1yQA3j1uwhK9stFgCepZA99oyk75mNfQGt0AuslRpphHF73y zRQn3Iy6zaurPAGs+EwPPS5jeiTbebq/gvesjGUAAuarL0Jg+81PaxgsVbl50KDULUS+vcvx5LF A7GOfLrjpf9RcJo+EbgPMtO5/JoONkn3iOvIkmq93j/EpZDq4G/7z X-Google-Smtp-Source: AGHT+IGm2RIO894xIrZL1ImnI/rl19zaqbhBC9Z1CCUaJW1vgrDUw+yK0HxwjEq5Tu7chXhyqfLGeQ== X-Received: by 2002:a05:600c:198e:b0:440:6a79:6df0 with SMTP id 5b1f17b1804b1-450d8874cb4mr35938815e9.22.1748674000874; Fri, 30 May 2025 23:46:40 -0700 (PDT) Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000e9asm38324765e9.21.2025.05.30.23.46.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 May 2025 23:46:40 -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: [RFC PATCH 1/3] net: dsa: tag_brcm: legacy: reorganize functions Date: Sat, 31 May 2025 08:46:33 +0200 Message-Id: <20250531064635.119740-2-noltari@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250531064635.119740-1-noltari@gmail.com> References: <20250531064635.119740-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 --- net/dsa/tag_brcm.c | 64 +++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/net/dsa/tag_brcm.c b/net/dsa/tag_brcm.c index fe75821623a4..9f4b0bcd95cd 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 Tue Dec 16 22:12:45 2025 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 05EB8AD5E; Sat, 31 May 2025 06:46:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748674005; cv=none; b=f/Gft2vuwUQePR2M2/gfTJ5DJ8EVC4dFdZWjGJl4CY7T1bT0qJ1gdkTYn5A/JmPoqFeP3fS4ZyKe0mhPenS0TcLaFg4HTc0lJ68RwQSlECvLHIXEo3euWvrucfYsuoueEk706IJpn6INn8ok6rA2h0cp4v3J4w6cX3Fy2ddvWK4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748674005; c=relaxed/simple; bh=QpX4INai12rEc4lYqmYoW3rZpCMemLfH8bOj0eZZmKM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=QQ35b3ri3ykGl0a0zjRNMNvyfA5kbRxMQE0nVf4yMUoL+DQIUhtEi8g5OnwpGdU4xMFBdwRnZVwbmhF7EKLTkL7Eh8Qx2TdE0LfhI9y/9js9xEBGcKzPAZbEyiJFgZW8y/H7c8MAVp1r2xLsd9dX/H9mbYFw1DInoYvTz1BZhNg= 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=NEI15wk5; arc=none smtp.client-ip=209.85.128.41 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="NEI15wk5" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-442fda876a6so22467365e9.0; Fri, 30 May 2025 23:46:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748674002; x=1749278802; 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=sdaIBNSavuoTQhY/Ym+rzlqZGexagOcedemyTbznHrE=; b=NEI15wk5SfEFgfmRETomBMifW6ZEINZeHMzQ6icBlrBQR92A6zyvwR7UGM5yGPN0mt zkAxiQQnAUp1v75Tonw5mVrE9TOMoLqQ3klXw8DNq1tnFookV9WowgGeqIHx5EsPjjAV EnIks9MqdDgV5FdsbyQ2CwCF5TUuavL0P1o8nR+yQbjBTnKBczekgM2LmCs8JdFpi2/0 Bt8suxEHBNpvg6bYY/2GE/G2w/GSmELWU5FAVL/wB7V8D+pNM/Y00UK1NhLivMc6QIv/ JvUWah9iWcQ4N4NqNm03zFF8InL3dHGYQZCKAXJRJhp7uYSox/X63H32J7lvhmBY9wFW AFIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748674002; x=1749278802; 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=sdaIBNSavuoTQhY/Ym+rzlqZGexagOcedemyTbznHrE=; b=vkJAQthlMv4N2wbbVRm169/qoBbKtFqBmXYX1lDmF9i9kT+UGvhrAghAMv6uxCNEwb Wl8WNz94O1+K8KC0Ek5KtVIyHMKK8AFKslIKDU/buz/0CVBktakw3YyLCkbuuWhlwU/5 Qhu3zku68JpOGuhJU8R3ADofxbdBqqtugKfAKl9W3IDzt44xm5U4vLwriBj/JrAYfw4l qxzAkMS4CtRTmXcogloSY5qdBmmUScBfTqjB7ORQNCUbjKpxd5BfExBajGa6K4WREIiD PIXwzy0MTZEm4ne/r03oLnGErs4hkV+XM3lRxZrMngLHV3W5dv75KViVopfCN+q6qc/C maPw== X-Forwarded-Encrypted: i=1; AJvYcCUSi8iNUk2v/8M8zcxw44iUF0LzhCpymfrdDip9owUCHWP7Z6bsgRMMbSSs48gdUbUE+ZR7DkG07jCe+xY=@vger.kernel.org, AJvYcCWk2yIwXQEFX7R5Ug7imcQnkaJDtBAqVVbR1sIRvTmiblsGbkQRVaFI6RPH/FW6DOgNnTQ4h91I@vger.kernel.org X-Gm-Message-State: AOJu0YyoKy/rqBN1HEYvlMLKDdJAMMVEQRW3FKXG9bx2NsjDyjupsN/W UpdQ8k3Dny650w1PJ1Sn4Dav24deuRk5kf2gdtXkMEV6FcxaXwTX7L0a X-Gm-Gg: ASbGnctBViBeVmfxforuSVN4m2i8hZ79ssVnwwTgqrMlCy4ok6sWw0GEylA/mCNYXy2 e8laA1bhJHXIFBV+traKC2oznAq1MHETWtJvnIH5cVGHdchxbID9LYTUAGb5EATE21diJweRb4H eMzDM2fpbiwh/YkJLQolbigAm/yx4sRiB/ZJKQNVolMfXdTRNegcOtawTMpuyikCPvnnI+XCWIH VniIPkCc9VYPtnR3KRVOBFHecH1KRQZKqt/mN4Gqmp/2QgactcdFJpzX4tAWZoURwfEgYSrz45Q SRhtvi83IhtTutJQWQXzremerixcsehSewW7tWAuNYkhZfIjDMUE29GLWhdnrMKEVz/mM9dD8UX gcXTK6FcIBDWcFJqHwW6WwsGCOqJCrG9Bc8H4dfX3L9S0lqXJJB/v X-Google-Smtp-Source: AGHT+IEI0oC4nl1aRUNiCzuUeC4fajDnNqq1pPE1WfgajfM56IDPKqd3h5QD77BqubtxgvYclAUbNQ== X-Received: by 2002:a05:600c:1e0d:b0:450:cde3:f266 with SMTP id 5b1f17b1804b1-4511ee150cdmr5802975e9.22.1748674002134; Fri, 30 May 2025 23:46:42 -0700 (PDT) Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000e9asm38324765e9.21.2025.05.30.23.46.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 May 2025 23:46:41 -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: [RFC PATCH 2/3] net: dsa: tag_brcm: add support for legacy FCS tags Date: Sat, 31 May 2025 08:46:34 +0200 Message-Id: <20250531064635.119740-3-noltari@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250531064635.119740-1-noltari@gmail.com> References: <20250531064635.119740-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(-) diff --git a/include/net/dsa.h b/include/net/dsa.h index 55e2d97f247e..d73ea0880066 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 2dfe9063613f..e6696e8212cf 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 9f4b0bcd95cd..80157bd51c64 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 swab32(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 Tue Dec 16 22:12:45 2025 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 51E5A22F154; Sat, 31 May 2025 06:46:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748674007; cv=none; b=uEG7uoxHqSAkSlXgTUF+zHd9Y4ulGdgCbu0v860/58lWJisLVoaEJkKe8VAvvbo5DfIiwXkr2JDLiwuHBQKNZb5AJV7RSW4RcmatvfAqB4KzIHlqdwtccU1b6j5+JAxPcGaQZ5vvUCPnbsJ/no2TdTS0DTNjNrNaAW7fRolGsUY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1748674007; c=relaxed/simple; bh=kJHhCMPchGRegdd/rLWL991p93hqX6tlwuMJNQ8VRTA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=Y3Lf7NGxAMrEd4MaAorvt3Bmnduge9JJAM8vIllAS7mKcUnNx0rlBdu6VwoyocmR/T+OEF0ZssxbFouvmppuES37J9TPlgEg3rt78EJWrpKUvGAINvz/R+3xc93FU0g1LRL8muVA/PTJpTdLTlaXyyakQUC/f5dAWqkRO9XQNV0= 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=cAU96o/c; arc=none smtp.client-ip=209.85.221.54 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="cAU96o/c" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-3a4f379662cso1903316f8f.0; Fri, 30 May 2025 23:46:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1748674003; x=1749278803; 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=bEZTMJM9pvIuqA1503OtkplFn4omE0UxVG0G8NBdaq8=; b=cAU96o/coM0mB4cqb1YQxH6Zrq/XSHEe58qZuiTKOBWM9e+fGEc0ZB0fkrsUNdinaP v2QlAGpcgndcIvFyK6MNNOpEmrJA9568eu7r0SFSFdHjZhlownme8JHlFdIfcgHWvehf gJ4T5alx19x/YwbaZwN6bTYfaOYTcQuai79i5IdBQ2e4F9nSxSS3Vfx78QVtYs3l80ad 5cA/q1c7fV5a9s2MiziBQhm41IdCQ1sBl9Ce3Z6mCuxxm1VHKmv9wWzt2jka1NHREhLj sb93dZO3lsfg0yAuywHslX3jvvV/fARtmfNTZpoP2qKRejgPYGrY4StBoGYIoRoHfhX1 S3tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1748674003; x=1749278803; 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=bEZTMJM9pvIuqA1503OtkplFn4omE0UxVG0G8NBdaq8=; b=Lv2w/JVta+Y4XxNOM7zc6a+cj2/Nf2yw2A3gUyhO/9qOwfTTqwxhvZVz/wK74MJozF W1y8XICaGLwRPrbk4ITNmT0oMvh5QBxCBKaR+6VU7sk71HTimyV1Z7MgVJad5yEe7p0u KMOvye1yv9BdbJQbZy04H378WQgU+SEzOfjtxg5+8/iiSAjenzpu1sGoVuluupgcONd7 TK3Qb1/EEG0B/k/eteHWFSpWa7g+1EpIN1OpW1GMnmc56chSWqY4PEeocQHhNsDCNtOY wASco+s8zgbVQQlGq3x+9NtOU6Z3mEhPKMKfyc0golSMPD2F3LZQ43JWxTIeQN9FobOo id6A== X-Forwarded-Encrypted: i=1; AJvYcCW3WhzxmRW6g+0z++PlnVJf6ZQyokxA+GJqdgEmVxo9NjyfLDvlq6ebhJVQKdIUo+7sgHdZ2eFm@vger.kernel.org, AJvYcCXMJPr52ol3Q7lvqpWhXrb+boGagueG6EspAToruk1qzdXOww95+Qhf4LmYejaM0KxGK9pOLSKi/7Xm9Ak=@vger.kernel.org X-Gm-Message-State: AOJu0YyBYcJrjKOhKaHOFp0KdJGbPB2KiwGZiakwfkXqi0aS2FsWZTvc OTv0b/8Mxh5jSpJOBVMb/T+cFP0lWzE+D3aJdnuYklP7hGBqww6UFU0P X-Gm-Gg: ASbGncvcLVjSNaDTdDYcx8T6LyPXVPgF0A5BmcIqPYQWrJgNQDTVEAMGZ63Ql0IECq7 udNxjh9+dE5Vp/V7h7UYvH3n3TJGwwmQoAS26hMhXiurCAaXqHBeLyr4rFMdSYfkHaUuLzcP9Wq uaDYV4Gz90bQjO7eWY4NsXhBKZYYR9f8i0AQPupxhCcSBFJsMlQhRCOEAsxIfm+K1ryMAsWx7U8 pG5nWSK946T9+8bM+uogR9rPEBzjQXVlSlO/uVJcSUcKEPXe+WP+HT7T6QAPj/Hy6n3QxuKifvy mRB1Fyg60pKZ03cdFvzZecgtr+zCAZbFSucFVEcAH7JSIg6YlOBO1WjKIaPz9OIfpW1SFicVNVM 6Fn5FeWtzlQgAKGkbDtA2vpbg8nbhSZLVzJGrqAObwAbN/lzgJjqN64QjDn9dhSQ= X-Google-Smtp-Source: AGHT+IH9jceSJwyuAZ+BuVedMH5uEvP11Dv3f//jz5Beq0/qu3VpXRgQpNd82+MVe5SSOXX4og0Bjg== X-Received: by 2002:a5d:64e2:0:b0:3a4:f7d9:3f56 with SMTP id ffacd0b85a97d-3a4fe154c8bmr789019f8f.2.1748674003334; Fri, 30 May 2025 23:46:43 -0700 (PDT) Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000e9asm38324765e9.21.2025.05.30.23.46.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 May 2025 23:46:42 -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: [RFC PATCH 3/3] net: dsa: b53: support legacy FCS tags Date: Sat, 31 May 2025 08:46:35 +0200 Message-Id: <20250531064635.119740-4-noltari@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250531064635.119740-1-noltari@gmail.com> References: <20250531064635.119740-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 --- drivers/net/dsa/b53/Kconfig | 1 + drivers/net/dsa/b53/b53_common.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/dsa/b53/Kconfig b/drivers/net/dsa/b53/Kconfig index ebaa4a80d544..915008e8eff5 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 132683ed3abe..28a20bf0c669 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -2262,8 +2262,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