From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm2-f13.google.com (mail-wm2-f13.google.com [74.125.225.141]) (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 C76D74D2EFB for ; Fri, 25 Sep 2026 18:25:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.225.141 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790360711; cv=none; b=UXs/jUoHWR3mpnum8UrkaJ3qHV22AjRYt5GEne+AMpJnJDrXeRNZKPhwI32RLl6VElkAl1PUh/7p3FUbfhN2dJMvKqxqiUQO2nzT+yuwvGo7USyDxHT+dMguFqfQPW2glU0v5tee9Mfb9+XPy2lqIsfEChT3SYS9xWdFjMCr59c= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1790360711; c=relaxed/simple; bh=0QQnZP1p2yN9vF5dpgaDO0cs3PioDmc8Lhtzbqk7Vg0=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QMNsyx5j1UhfHrNHRO80uKKbZiM7lTBNzbl1pohaWzIobmpCj+eMB8bB0cxtMxzKS9+7ejvxD77YDvSpzw9TGU4q+0bMzAniyCB0sBhvN+ezDSNKpomIP8uaW+r3osP6pBci8kelYr6HiFQkI9owYj46YlCqFAYiXGKBnyAVRPw= 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=ElrdH20n; arc=none smtp.client-ip=74.125.225.141 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="ElrdH20n" Received: by mail-wm2-f13.google.com with SMTP id 5b1f17b1804b1-49ccead2aecso5953985e9.0 for ; Fri, 25 Sep 2026 11:25:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790360707; x=1790965507; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=RLKc66fcC+JNVwgHdi/2vbRPcicTKmn6g9qNXOjPoho=; b=ElrdH20nTHwcLjCIisGu7CdX4HlGrTenoMZ2rVi8FDGO44pLy+F2f9AefXvkzCJu4p NB6nS75g7uKaM5y/ljvOP4d4KqqdvzCxOcpe5JluPiapVSY05n9cFN8OJzkMIoE63VRP xH0eJKaZFbQJjiMFjZzcdL6uZWuVnpUYa+kvIcaNNwWTgWf11U5Pp7nCZGqcVURMEBmy b7cc+z5oKLQv9A+QmXY3zmYNpLc5j9JqYLstC0z/8OOYNteq6oE46kODtbqkHpjrjua0 5aYWk7yWpapO4g+eJN2bUeBpY5mSd58DbKhKY9C5HJor5dXt8RGV6zG/XrJmszq7qNef Ql3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790360707; x=1790965507; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=RLKc66fcC+JNVwgHdi/2vbRPcicTKmn6g9qNXOjPoho=; b=qG7Eb5damYQTeOvubzVMY97wlqDP4fsLxbjjhRlAaNjp4je4FYIQ8M/BS+Mn7roEva 49qagcf9HwhUUa4YHGy133QKg80P6u6fvSAcQop3PGajstSSgxmuMXfEgIBOMv9YFmzB G2Wu9Gs/oJtrw7D8QosmuX7cRC3HxCnhvXahUephxTBvynf1VLNR+l29bZvryvvPun4T slbtuIAkkpi8N27D6RpIVH7YJwclFJNnTg4D+slUK0s58d4FMh6RtY267s2UKmn7VIVi WElSFZG5bLKq20sh9jEZeD6esqEfgAeoNxzUxH28nWTinlapqI5W7oi1qoaRf1OuZdpT eqjg== X-Forwarded-Encrypted: i=1; AKwUvBxNT6D0P667FH2nR8aEdnO6jBz9qo9g2vwjElYgyE4jd3PV+Xpsyq+slmiQTLh9dQEkiHRckkjegW1Q@vger.kernel.org X-Gm-Message-State: AFuF++luB4AnwajQ2IjluZ1XogfUHsbtN7nnW8+upSg0xUIjZvNH0zfP VjR+MaAxF+PB7GjS7hdHRrg5NLGMo1QROX7TBPHZqeu79Ubkgg5v/IFp X-Gm-Gg: AYBFou2eQFgnWXpl5E2/1nNISHqicMVQjonZJChijEFQxAFVmXXzBS4z54GTMN9pZjg AmJHxme+c1CSnNRS/cOI2SPNkBFEFJ1T8r/+lvUAVa3ud1jNiM5Sl0UmUIcXOdKB2X24pTC40C1 frYyuK8vm+2djWjrkJnOQNSw5WJuRQHDZmgnI6avgCD6/oJ8hy1H4UwTl1NS6jkq+bD2hCESnR0 FrqZa3TWGcXbJxHVHWa7xyEeSBTAtyRgjj+sCdhWsI0Oca0cju0w2kI6jVvHr5pHZjtTYykJw3F sLhZ7I0nNeoEk7ZGbN19fuvnoiyY63IiyxHukZrj09hk0Fqbn39EVAavPZAsywUgktGwCSwesf4 lUZb25SFElSE09XHp5rNzGd03tka4B6tiAhcJ1YoIQcRq+eLwYi6k46qrK9dn1J0xPpfUA1nucx p2ubU45Y2Bc4utyW9rSj/JZ1wJLDElKvcQw1dluWfk9ifC51BtsAzT/g54xwIaAwiI1coR4NZzG 4wyN85EJ9xXu105x7ns6MbVom3fTyzqINjfcKyhgVfNwF50lC8jDWNWK3/jXCEJPl1VAdNDef0= X-Received: by 2002:a05:600c:3107:b0:49c:cee2:1697 with SMTP id 5b1f17b1804b1-49ff06e502dmr57684725e9.16.1790360706918; Fri, 25 Sep 2026 11:25:06 -0700 (PDT) Received: from Ansuel-XPS24.localdomain (host-79-29-83-136.business.telecomitalia.it. [79.29.83.136]) by smtp.googlemail.com with ESMTPSA id 5b1f17b1804b1-49fe5dfa6a7sm266231245e9.12.2026.09.25.11.25.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 25 Sep 2026 11:25:06 -0700 (PDT) From: Christian Marangi To: Christian Marangi , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Vladimir Oltean , Matthias Brugger , AngeloGioacchino Del Regno , "Chester A. Unal" , Daniel Golle , Heiner Kallweit , Russell King , Simon Horman , linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, netdev@vger.kernel.org, mfd@lists.linux.dev, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net-next v23 6/9] net: dsa: tag_mtk: add Airoha variant usage of this TAG Date: Fri, 25 Sep 2026 20:24:28 +0200 Message-ID: <20260925182435.21207-7-ansuelsmth@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260925182435.21207-1-ansuelsmth@gmail.com> References: <20260925182435.21207-1-ansuelsmth@gmail.com> Precedence: bulk X-Mailing-List: devicetree@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Add variant of the MTK TAG for Airoha Switch and comments about difference between Airoha AN8855 and Mediatek tag bitmap. Airoha AN8855 doesn't support controlling SA learning and Leaky VLAN from tag. Although these bits are not used (and even not defined for Leaky VLAN), it's worth to add comments for these difference to prevent any kind of regression in the future if ever these bits will be used. Rework the makefile, config and tag driver to better report to external tool (like libpcap) the usage of this variant with a dedicated "Airoha" name. Signed-off-by: Christian Marangi --- include/net/dsa.h | 2 ++ net/dsa/Kconfig | 11 +++++++++++ net/dsa/Makefile | 2 +- net/dsa/tag_mtk.c | 36 +++++++++++++++++++++++++++++++++--- 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/include/net/dsa.h b/include/net/dsa.h index 5d12191b6f6f..9824c63ad50b 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -62,6 +62,7 @@ struct tc_action; #define DSA_TAG_PROTO_KSZ8463_VALUE 34 #define DSA_TAG_PROTO_MT7628_VALUE 35 #define DSA_TAG_PROTO_KS8995_VALUE 36 +#define DSA_TAG_PROTO_AIROHA_VALUE 37 enum dsa_tag_protocol { DSA_TAG_PROTO_NONE = DSA_TAG_PROTO_NONE_VALUE, @@ -76,6 +77,7 @@ enum dsa_tag_protocol { DSA_TAG_PROTO_KSZ9893 = DSA_TAG_PROTO_KSZ9893_VALUE, DSA_TAG_PROTO_LAN9303 = DSA_TAG_PROTO_LAN9303_VALUE, DSA_TAG_PROTO_MTK = DSA_TAG_PROTO_MTK_VALUE, + DSA_TAG_PROTO_AIROHA = DSA_TAG_PROTO_AIROHA_VALUE, DSA_TAG_PROTO_QCA = DSA_TAG_PROTO_QCA_VALUE, DSA_TAG_PROTO_TRAILER = DSA_TAG_PROTO_TRAILER_VALUE, DSA_TAG_PROTO_8021Q = DSA_TAG_PROTO_8021Q_VALUE, diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig index 4f44bf3ede23..28a249f04a43 100644 --- a/net/dsa/Kconfig +++ b/net/dsa/Kconfig @@ -24,6 +24,13 @@ config NET_DSA_TAG_NONE Say Y or M if you want to enable support for switches which don't tag frames over the CPU port. +config NET_DSA_TAG_AIROHA + tristate "Tag driver for Airoha switches" + select NET_DSA_TAG_MTK_COMMON + help + Say Y or M if you want to enable support for tagging frames for + Airoha switches. + config NET_DSA_TAG_AR9331 tristate "Tag driver for Atheros AR9331 SoC with built-in switch" help @@ -104,8 +111,12 @@ config NET_DSA_TAG_MT7628 Say Y or M if you want to enable support for tagging frames for the switch embedded in the MT7628 SoC. +config NET_DSA_TAG_MTK_COMMON + tristate + config NET_DSA_TAG_MTK tristate "Tag driver for Mediatek switches" + select NET_DSA_TAG_MTK_COMMON help Say Y or M if you want to enable support for tagging frames for Mediatek switches. diff --git a/net/dsa/Makefile b/net/dsa/Makefile index 1f9cc30e9988..7ccaa528a989 100644 --- a/net/dsa/Makefile +++ b/net/dsa/Makefile @@ -29,7 +29,7 @@ obj-$(CONFIG_NET_DSA_TAG_KS8995) += tag_ks8995.o obj-$(CONFIG_NET_DSA_TAG_KSZ) += tag_ksz.o obj-$(CONFIG_NET_DSA_TAG_LAN9303) += tag_lan9303.o obj-$(CONFIG_NET_DSA_TAG_MT7628) += tag_mt7628.o -obj-$(CONFIG_NET_DSA_TAG_MTK) += tag_mtk.o +obj-$(CONFIG_NET_DSA_TAG_MTK_COMMON) += tag_mtk.o obj-$(CONFIG_NET_DSA_TAG_MXL_862XX) += tag_mxl862xx.o obj-$(CONFIG_NET_DSA_TAG_MXL_GSW1XX) += tag_mxl-gsw1xx.o obj-$(CONFIG_NET_DSA_TAG_NETC) += tag_netc.o diff --git a/net/dsa/tag_mtk.c b/net/dsa/tag_mtk.c index c7dc7731675e..f8087d768da6 100644 --- a/net/dsa/tag_mtk.c +++ b/net/dsa/tag_mtk.c @@ -11,6 +11,7 @@ #include "tag.h" #define MTK_NAME "mtk" +#define AIROHA_NAME "airoha" #define MTK_HDR_LEN 4 #define MTK_HDR_XMIT_UNTAGGED 0 @@ -18,6 +19,9 @@ #define MTK_HDR_XMIT_TAGGED_TPID_88A8 2 #define MTK_HDR_RECV_SOURCE_PORT_MASK GENMASK(2, 0) #define MTK_HDR_XMIT_DP_BIT_MASK GENMASK(5, 0) +/* AN8855 doesn't support SA_DIS and Leaky VLAN + * control in tag as these bits doesn't exist. + */ #define MTK_HDR_XMIT_SA_DIS BIT(6) static struct sk_buff *mtk_tag_xmit(struct sk_buff *skb, @@ -99,6 +103,7 @@ static struct sk_buff *mtk_tag_rcv(struct sk_buff *skb, struct net_device *dev) return skb; } +#if IS_ENABLED(CONFIG_NET_DSA_TAG_MTK) static const struct dsa_device_ops mtk_netdev_ops = { .name = MTK_NAME, .proto = DSA_TAG_PROTO_MTK, @@ -107,8 +112,33 @@ static const struct dsa_device_ops mtk_netdev_ops = { .needed_headroom = MTK_HDR_LEN, }; -MODULE_DESCRIPTION("DSA tag driver for Mediatek switches"); -MODULE_LICENSE("GPL"); +DSA_TAG_DRIVER(mtk_netdev_ops); MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_MTK, MTK_NAME); +#endif -module_dsa_tag_driver(mtk_netdev_ops); +#if IS_ENABLED(CONFIG_NET_DSA_TAG_AIROHA) +static const struct dsa_device_ops airoha_netdev_ops = { + .name = AIROHA_NAME, + .proto = DSA_TAG_PROTO_AIROHA, + .xmit = mtk_tag_xmit, + .rcv = mtk_tag_rcv, + .needed_headroom = MTK_HDR_LEN, +}; + +DSA_TAG_DRIVER(airoha_netdev_ops); +MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_AIROHA, AIROHA_NAME); +#endif + +static struct dsa_tag_driver *dsa_tag_driver_array[] = { +#if IS_ENABLED(CONFIG_NET_DSA_TAG_MTK) + &DSA_TAG_DRIVER_NAME(mtk_netdev_ops), +#endif +#if IS_ENABLED(CONFIG_NET_DSA_TAG_AIROHA) + &DSA_TAG_DRIVER_NAME(airoha_netdev_ops), +#endif +}; + +module_dsa_tag_drivers(dsa_tag_driver_array); + +MODULE_DESCRIPTION("DSA tag driver for Mediatek switches"); +MODULE_LICENSE("GPL"); -- 2.55.0