From nobody Mon Sep 28 12:34:46 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011001.outbound.protection.outlook.com [40.107.74.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0890C2FE05C; Fri, 21 Aug 2026 17:10:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.1 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332223; cv=fail; b=A8S6JLo3dPJ0blR/K2pLRY/RF5Py31kd9qBIbH/06MQtjDS+1Yta+0OSNXOISpTmcMU35VB6DzSQlPSU04Tal7V0tyfmu6UBb7tZn55TftpB+OGISAoHHMIjIiTRtNOTgFqkf6ywP20xaTNBlbdHJ7Mzf5YRoFlCFeXHlEjg3Sg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332223; c=relaxed/simple; bh=f1ntx8Zur6SCmKiu88fDwvUsgxRI1KjXwYP5f0APXjs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=q1MfgLgr5878T8Gfc3cPuOj9pEKmA8eewZSfWgyUjO/zxPCQA0W1e10GWacCf6stXBt2fXJKaNJMgdsBt2NR9KtYZRuOVZS/8k4s9QPq6B8zFubu7t8a1o+n/xF7JrAB0zrr0gQaxrKFH6qkpPmUty3ifDaQEmU0k4HSYYrjHXM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=aPdMZ2I4; arc=fail smtp.client-ip=40.107.74.1 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="aPdMZ2I4" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nRLfRRQX4YtBHgJhJGxMsrfBRBMANaaDokyCKpAmemiICNRQDL1RBn/YY2UqY0wS2xrp0O84NMxG9bpqNjMIs+bVEPcEim5ZQ4w00XfejeATbVRj0kP5lzL5eoZW3B2jgXh//uMJtznMXIkdKjjrqYwAc/CU5j6OW4G7oJj62/bjv3JLykxUM4S7ODZZG/x85Nbi7C/HG6b4BITZ0+r8mA/ZQ1GYcfzkBcvwvRg5CGN0DogqQnHspFOtwip8Aqsb/O7RSiuTNF8M6OQqKGWCTM8Z+al6D9pJALhhvWw9sZk273lDOXPdtDRvISUly6BhMVi3I6Qw2j+iqiX6YYzWeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=M8eD4UIPV5wBKpRLtXpX3q1xKOOi8y5FH6csbtIBhIw=; b=qVrVXCEZriGdsSgxpyET8m+Xixdv8w5RLHfrTwZ+8SemysKScK/0vcwV6bRpL6PKLXR27cVBQhpPaXGTNMYEGLlXouyDjoC6VQnk3C20t40M5Ip0uczrrOXFMLip/9f0h6qoUi2sFwCpDLAcTHlKHens5dtgrAn9rQxSqjMqX5SopXIlstcNBIF4lSrKktDDpAY3BSwDackbx8Lr0VSksiH89f2k8hY4rifu1ZnWCRztbz4U3NzqfDGh4/WmmdriX+v0vQosvYAHDAdSSwJmzaACdcsj2un9pyDIDSqOS67EDBXO6Kt8ah1KZY0KhYVLJIA+RNQbud9s3h3H0g3Q2g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=bootlin.com smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=M8eD4UIPV5wBKpRLtXpX3q1xKOOi8y5FH6csbtIBhIw=; b=aPdMZ2I4QSD7iJKzftpopI7+0V3WCU2VFjZMIbBNxhxRQlZuO4FVUrXDrEZklu49Spbw7/pyR3k96IvTnHQKFh+h7hEyH58Snm6IJ+pvLzBydvV1z44hTcDoBeEhFEeOUjZ2iA7GX4Mo2/7WqnXPCFNn5zxRb/Z1686Gpea7YDc= Received: from TYCP286CA0255.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456::15) by TYYPR01MB15106.jpnprd01.prod.outlook.com (2603:1096:405:1a1::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.11; Fri, 21 Aug 2026 17:10:16 +0000 Received: from TY2PEPF00005621.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:456:cafe::5f) by TYCP286CA0255.outlook.office365.com (2603:1096:400:456::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.11 via Frontend Transport; Fri, 21 Aug 2026 17:10:16 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay005p.adwin.renesas.com; pr=E Received: from ejcrelay005p.adwin.renesas.com (8.62.32.50) by TY2PEPF00005621.mail.protection.outlook.com (10.167.240.52) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.3 via Frontend Transport; Fri, 21 Aug 2026 17:10:14 +0000 Received: from vm01.adwin.renesas.com (DEU-5CG20946WF.adwin.renesas.com [10.226.92.76]) by ejcrelay005p.adwin.renesas.com (Postfix) with ESMTP id 3118730001F6; Sat, 22 Aug 2026 02:10:08 +0900 (JST) From: Ovidiu Panait To: maxime.chevallier@bootlin.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, shuah@kernel.org, joabreu@synopsys.com, yi.fang.gan@intel.com, jun.ann.lai@intel.com Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org, Ovidiu Panait Subject: [PATCH net v2 1/6] net: stmmac: Remove VLAN perfect matching dead code Date: Fri, 21 Aug 2026 17:09:54 +0000 Message-ID: <20260821170959.79708-2-ovidiu.panait.rb@renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> References: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY2PEPF00005621:EE_|TYYPR01MB15106:EE_ X-MS-Office365-Filtering-Correlation-Id: e1a8b1be-f8ef-4ee9-6b99-08deffa71153 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|7416014|23010399003|36860700016|1800799024|921020|18002099003|22082099003|56012099006|11063799006|10067099003; X-Microsoft-Antispam-Message-Info: sIHgBtSxbJ/2Z9hlDCQAm3+P/i28l4WiMB7uLaOtkuBD9nnErVk/3JU10Ud+RQcsSf4AU4F60WQerC/5r5ekI55ZUGIkIbmIyUS8RYbf3RU8muRXBC5y7jRZMUmHn/UauyztOOAIlmS80N+n0J6squXiDdwByg+I7Kvo5mgaB7RAPYdQkz3IrCMX1rcUNcuA22wRq3n6RqU4cgn47fwJ5wMpAVVF2O4dMb0TSCfARnZbIvxx6InyVR0bB0zpI65vVqwGEUjtA2ob3lTKFtlOhIpNorhtfLBBkDlWFK8SjG4YvYpO5FwzpuQuTrYdbHxYevA/LOVtozwL/pTYRy7lFhBy3qiyuZsJXMfzY3vNqHXe/SITzktdX23Q1PrBfvpw96uFuoIGQf4J1xpVqx2sdpk3rlfBsTYL7WzI8+7cf44XNobbigRVyOEadg7wRzwlX1PbJNyRMH74mWaSISe/PL/t6w39VLF28oziB4uL3pgLS3/oS5IG4lNKUQAjmiu3kW2zp/vMq3VxOvwivs3rDbhM6MXSxQGNzkNxUyHeIScDUv0zgd4mU/0PBFte7NSjOmgYK947Hmorb/PEIgosF20jXlzqVwmRNMugOseOrNqCfLABYt6aKBFWYlPD/sfsAW6VNhYkKuyO+rkVym6BrNa7Ifc2xX00VZTaQPkmMYU+qmThf1zBiJWsVaRQs43RoinkwUHIdCxfvM0myDjI67w9fka41qasyO57PCWlSYLdFN0qAXPr5SjbOTQ9kg5W X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay005p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(376014)(7416014)(23010399003)(36860700016)(1800799024)(921020)(18002099003)(22082099003)(56012099006)(11063799006)(10067099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: dXe4tPlV485sPWfW7gk9lnQH2my4GgCj/oc4AcR+ypXAX4oM12oZuR+ekAYKtYtTI9wCG54T3XiyyoBE5/9TZvQePia84O+6TgTofd6jm68Wq/4SqLhPWZz4gaXFxeZ2660yc42YnTEYB5JtbmM9lhaKsQQ0UsnEP+aGK8wmuw6rVkjkqnUXijDKmhh3ADMhsLNOkd/ygL1tFTRTDp/oyjjgaOAZTFM4cUSKPUSD91Swi83L968pft0XcS+z/30ksKE3+1OXm/DRoJFqtQw8NLoEiEqDwL5npMB/v08nhAoEpSFvKi0nYvfEdqhTePwrF6ufogNVAN2Ri7Gf/45iS5bZ/4hrSG6gYrKALOYBbO9Pnqs4M/P74XRNa3l3CB+60bPT0gpmRje+ItT9xd/xqeXPeaSfvEcBNfMoDTrDM8iOFEsuNJm6rp4WXqBPFTNx X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Aug 2026 17:10:14.7981 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e1a8b1be-f8ef-4ee9-6b99-08deffa71153 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay005p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TY2PEPF00005621.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYYPR01MB15106 Content-Type: text/plain; charset="utf-8" stmmac_vlan_update() falls back to "perfect matching" when the VLAN hash filter is unavailable (!priv->dma_cap.vlhash). This fallback has been unreachable in normal operation since its introduction in commit c7ab0b8088d7 ("net: stmmac: Fallback to VLAN Perfect filtering if HASH is not available") because the NETIF_F_HW_VLAN_{CTAG,STAG}_FILTER features are advertised only when priv->dma_cap.vlhash is true. The fallback is also duplicating the code in vlan_add_hw_rx_fltr(), which is always available since stmmac_get_num_vlan() returns at least 1. Therefore, remove it. Fixes: c7ab0b8088d7 ("net: stmmac: Fallback to VLAN Perfect filtering if HA= SH is not available") Signed-off-by: Ovidiu Panait Reviewed-by: Maxime Chevallier --- v2 changes: None. drivers/net/ethernet/stmicro/stmmac/hwif.h | 2 +- .../net/ethernet/stmicro/stmmac/stmmac_main.c | 13 +----- .../net/ethernet/stmicro/stmmac/stmmac_vlan.c | 41 +------------------ 3 files changed, 4 insertions(+), 52 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/hwif.h b/drivers/net/ether= net/stmicro/stmmac/hwif.h index 04dafec021b4..6f26dbf95ce1 100644 --- a/drivers/net/ethernet/stmicro/stmmac/hwif.h +++ b/drivers/net/ethernet/stmicro/stmmac/hwif.h @@ -633,7 +633,7 @@ struct stmmac_est_ops { struct stmmac_vlan_ops { /* VLAN */ void (*update_vlan_hash)(struct mac_device_info *hw, u32 hash, - u16 perfect_match, bool is_double); + bool is_double); void (*enable_vlan)(struct mac_device_info *hw, u32 type); void (*rx_hw_vlan)(struct mac_device_info *hw, struct dma_desc *rx_desc, struct sk_buff *skb); diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/ne= t/ethernet/stmicro/stmmac/stmmac_main.c index b2b7d0242dd3..16fe56a1f617 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -6809,29 +6809,18 @@ static u32 stmmac_vid_crc32_le(__le16 vid_le) static int stmmac_vlan_update(struct stmmac_priv *priv, bool is_double) { u32 crc, hash =3D 0; - u16 pmatch =3D 0; - int count =3D 0; u16 vid =3D 0; =20 for_each_set_bit(vid, priv->active_vlans, VLAN_N_VID) { __le16 vid_le =3D cpu_to_le16(vid); crc =3D bitrev32(~stmmac_vid_crc32_le(vid_le)) >> 28; hash |=3D (1 << crc); - count++; - } - - if (!priv->dma_cap.vlhash) { - if (count > 2) /* VID =3D 0 always passes filter */ - return -EOPNOTSUPP; - - pmatch =3D vid; - hash =3D 0; } =20 if (!netif_running(priv->dev)) return 0; =20 - return stmmac_update_vlan_hash(priv, priv->hw, hash, pmatch, is_double); + return stmmac_update_vlan_hash(priv, priv->hw, hash, is_double); } =20 /* FIXME: This may need RXC to be running, but it may be called with BH diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c b/drivers/ne= t/ethernet/stmicro/stmmac/stmmac_vlan.c index e24efe3bfedb..983a90cb9767 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c @@ -162,7 +162,7 @@ static void vlan_restore_hw_rx_fltr(struct net_device *= dev, } =20 static void vlan_update_hash(struct mac_device_info *hw, u32 hash, - u16 perfect_match, bool is_double) + bool is_double) { void __iomem *ioaddr =3D hw->pcsr; u32 value; @@ -184,20 +184,6 @@ static void vlan_update_hash(struct mac_device_info *h= w, u32 hash, } =20 writel(value, ioaddr + VLAN_TAG); - } else if (perfect_match) { - u32 value =3D VLAN_ETV; - - if (is_double) { - value |=3D VLAN_EDVLP; - value |=3D VLAN_ESVL; - value |=3D VLAN_DOVLTC; - } else { - value &=3D ~VLAN_EDVLP; - value &=3D ~VLAN_ESVL; - value &=3D ~VLAN_DOVLTC; - } - - writel(value | perfect_match, ioaddr + VLAN_TAG); } else { value &=3D ~(VLAN_VTHM | VLAN_ETV); value &=3D ~(VLAN_EDVLP | VLAN_ESVL); @@ -251,7 +237,7 @@ static void vlan_set_hw_mode(struct mac_device_info *hw) } =20 static void dwxgmac2_update_vlan_hash(struct mac_device_info *hw, u32 hash, - u16 perfect_match, bool is_double) + bool is_double) { void __iomem *ioaddr =3D hw->pcsr; =20 @@ -279,29 +265,6 @@ static void dwxgmac2_update_vlan_hash(struct mac_devic= e_info *hw, u32 hash, =20 value &=3D ~VLAN_VID; writel(value, ioaddr + VLAN_TAG); - } else if (perfect_match) { - u32 value =3D readl(ioaddr + XGMAC_PACKET_FILTER); - - value |=3D XGMAC_FILTER_VTFE; - - writel(value, ioaddr + XGMAC_PACKET_FILTER); - - value =3D readl(ioaddr + VLAN_TAG); - - value &=3D ~VLAN_VTHM; - value |=3D VLAN_ETV; - if (is_double) { - value |=3D VLAN_EDVLP; - value |=3D VLAN_ESVL; - value |=3D VLAN_DOVLTC; - } else { - value &=3D ~VLAN_EDVLP; - value &=3D ~VLAN_ESVL; - value &=3D ~VLAN_DOVLTC; - } - - value &=3D ~VLAN_VID; - writel(value | perfect_match, ioaddr + VLAN_TAG); } else { u32 value =3D readl(ioaddr + XGMAC_PACKET_FILTER); =20 --=20 2.34.1 From nobody Mon Sep 28 12:34:46 2026 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010015.outbound.protection.outlook.com [52.101.229.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B1ACE37E2ED; Fri, 21 Aug 2026 17:10:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332228; cv=fail; b=NOKYJ8umh/lLu+DsITqO+RPsplqWMait1Pxa0dqcxuiHKNvHYU2XUjoR0IfGFmh7jrYgYRDM5zChlUa+PSS6g4aw8V98fKSUHtsT63I8wipvhKJ1o8Slq55qWLlhcqPlj8mc8+be6PMe3RmOnInD1lrLiAUUfS91gzYkErYkAKw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332228; c=relaxed/simple; bh=Hg4qnFTHK9c3FimcsHm+ggp1BuAsUjpvVSL0OX9TkN4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=uX06/oydFG8y4ieTIRofVsL+CvWIy5b8LAaoaivu3WaFNNzWrYBblwUX1KzLdnPo1isBtGnFy5/XMgMat8qZZ4FOoAYqYWPOA0SKXt0m2uZa+csqmPn+7bOVrTuozfBcsqA8x0+P00V0W4c977GyPDH/ZdzJcmZJoJsYEp1ROkg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=FzYGAdk+; arc=fail smtp.client-ip=52.101.229.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="FzYGAdk+" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eDwXUsyKc3YmCT6pKSakL4bQFPDRNqrCH6F789fP1eXqboC2QFsppg9Xi5DWvtS1Wee0/4gy8R6NyXKxWoDb3FZv54GooIQrzGYgsAbq6IwzrQG3LqyPE8bNsYVf+h3YLLr7jUi27ob/czLB/Wdplmd6U8IVatXnNBmc9bv/GzwtAdRQuddX0yAXLa+GtRu3eZsNsH/3YRir8Eq5PbA+DEZWEsP8rcHMXxqfqkRidrWbJHkQpG8qNpHEvEcTTCTFJt6LCvtjoNx9sWkJ3QtpG0QOMtFtubY4na8VaQmL5Vq+mSFFVqHqodkhyhqQr1w2uwXzYEq46DWzKbn+qGKTxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0KqBjQAidHmiDJ87jWuhNMIDKoC/A6M8dQ922yheld4=; b=E89boLcBCZ+uMMe5Ku/2jPaWz2UBs72sGFgCDCKFqszrSbPFCimkPCMGkIsrCVC7OVreczSdfZDqFNbmfr/IQ6P4saqh0ViBz22u6QU0PrE9p6BapYu9wCaZ/RGAJBVb9r8vt3n0jWE2VNThehGAlaxOIEjt1eNzKwvUSpkoktrZFoq5sUWWdxRrd3iVc5roAfTBMKnqQMgfIRhpptvRrapyqBKv1V7GM1Erd6gEopV1W8BXSyx+j29F5XzRgnqgmIympSoF/B0t1T29vt7BzyCe5SzERreZhHoWWqGMWbCwClN16oTjA2VulTCIH9GqDJgqATE90WdocTo5zdgERQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=bootlin.com smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0KqBjQAidHmiDJ87jWuhNMIDKoC/A6M8dQ922yheld4=; b=FzYGAdk+HJZRi4x23o6zudr52ONyUNhBVG7bZ8Kq1+HObmLDJDOLGrl36whMvrYtOBEjBxrMjphRq07vkOkLBZBEOk4tHPkDFPi2hBCF/EFZ22ACSB0t+l8sWKS5Ni2ORuGKs0AAZexwXz6Z9mI75mT8T9+/axeZ9BGakm5NMcs= Received: from TY4P286CA0108.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:380::14) by TYCPR01MB18482.jpnprd01.prod.outlook.com (2603:1096:405:390::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.11; Fri, 21 Aug 2026 17:10:22 +0000 Received: from TYO1EPF00005025.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:380:cafe::a1) by TY4P286CA0108.outlook.office365.com (2603:1096:405:380::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.11 via Frontend Transport; Fri, 21 Aug 2026 17:10:22 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay005p.adwin.renesas.com; pr=E Received: from ejcrelay005p.adwin.renesas.com (8.62.32.50) by TYO1EPF00005025.mail.protection.outlook.com (10.167.240.22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.3 via Frontend Transport; Fri, 21 Aug 2026 17:10:20 +0000 Received: from vm01.adwin.renesas.com (DEU-5CG20946WF.adwin.renesas.com [10.226.92.76]) by ejcrelay005p.adwin.renesas.com (Postfix) with ESMTP id 4248830001F5; Sat, 22 Aug 2026 02:10:14 +0900 (JST) From: Ovidiu Panait To: maxime.chevallier@bootlin.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, shuah@kernel.org, joabreu@synopsys.com, yi.fang.gan@intel.com, jun.ann.lai@intel.com Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org, Ovidiu Panait Subject: [PATCH net v2 2/6] net: stmmac: Enable double VLAN processing only when supported Date: Fri, 21 Aug 2026 17:09:55 +0000 Message-ID: <20260821170959.79708-3-ovidiu.panait.rb@renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> References: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYO1EPF00005025:EE_|TYCPR01MB18482:EE_ X-MS-Office365-Filtering-Correlation-Id: d60c18cd-d881-4742-9b6e-08deffa714e4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|82310400026|1800799024|7416014|23010399003|376014|22082099003|18002099003|11063799006|56012099006|10067099003|921020; X-Microsoft-Antispam-Message-Info: rkHJ5p7BJ6jzhg75w3cDbQQCJvR5a3ZBBJz4JoThBx+/V4FyWwhZ8Jv1sCjmyMz5mN5jIiHPg9yrcFRfTf9rYeBwPi/AgF7VBjF7lzGsD/OrQwqZB8qxD5MC4x1i+Scb/J03hPExn/aIQQiER2PvgYcVDZ5VjqTNst29moWqbKVRqAyobcR337BfGubg8lVhhURfTkVD9e0jDv3HUCzk9ijUXmk3si5b1kgK0r94zeIFU5CQ7i99VGSHoaBBdgUl+xq+YoW8iSnMpPd/AhvivWuarf/bqpPREowP3lc0YPtJQe5lV7SaBGRCNEoyYjtHGOm9epbbLG6YnSipeARNfvcHZHi3FsszQ84IqVgO/E4K2dgqrEkDz0uaB7lu/HQRZ788+Ewu4YUgq7JNp5X1KK8x6oKO7gt9YwkNp2VAXAaTaziXEWn7/NrBmNNXjRIuu/zPReyQXeKpiDuMe9I9utWoqtljrbY5CsOvyj/1CDzW5pz6HnjYZ/T6nBLdvRv97MJN8TqO/yt+sT38aAXFXcRciV1vM5OqgZjMZ65uBmF9TuymtnGLyBa42zlQqnBfGaymtGvn3Gw/pbSPNS2SPYcJeiXIlr/xjIL3QK4ACQ9COQiq/QrkB86T2JnQJDGB2GiTHKgyf1viBSvMut86jD0o/HUGIXOk/nzEp/rcs2yM/czPyj3UP2mKMCMxnoImts6txFIeyxNvmGFtepoj/NUmGlO2MghKE+2G481leptn3gaLF68hX6f5Pkjnivig X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay005p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(1800799024)(7416014)(23010399003)(376014)(22082099003)(18002099003)(11063799006)(56012099006)(10067099003)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zWvFYW95u5UxNebtyy367hLrjMgl+B5KafOl5QYHl6rxSDrCLlDfY0ne6ajwdXP9nhzV1JctcOfVLs3vjpZ8yCCNBM2BMbHQbKuue7nWTFXWTtldELSYg6qlNY3dmmwoGr7H+StfD9UC5iBk5wcoJeWpQHasNZMF+qHhTcXu8KibLcX7z9ote6uRVfTrS57lw3ZtHwjsXKUkBzisJTgK1DX951pU950iAQZXeAISa6sqmkcZ/jLQNkvbRbTWiV5Cj/Jw595smbD518XasU+qBlO7IAYuC4gs7yDtbhYePih0IdbO7eMMlzbqClUXxRolfqwqkkXU0MKcRmQ0LKM9kweQqAtFqXKwSPdDc95lb3BPA5uJjURv6crSdAVjEBgjUpCY73QSpfDtpkiEGD/ubd2gxbvb+l/AbJPA3cCieQOTBJ/lUeLonxfFrnlp1oSh X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Aug 2026 17:10:20.7833 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d60c18cd-d881-4742-9b6e-08deffa714e4 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay005p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TYO1EPF00005025.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB18482 Content-Type: text/plain; charset="utf-8" stmmac_vlan_update() turns on double/S-VLAN processing whenever an 802.1ad VLAN is registered, without checking whether the MAC actually supports double VLAN processing. That capability is reported in dma_cap.dvlan. This was found while investigating a separate bug in the double VLAN RX stripping path. The outer 802.1ad tags were unexpectedly stripped by the MAC (because the ESVL bit was set). Check dma_cap.dvlan before enabling EDVLP/ESVL/DOVLTC bits, so that double VLAN processing is enabled only on supported hardware. Also, advertise NETIF_F_HW_VLAN_STAG_RX and NETIF_F_HW_VLAN_STAG_FILTER only when dma_cap.dvlan is set. Fixes: 3cd1cfcba26e ("net: stmmac: Implement VLAN Hash Filtering in XGMAC") Signed-off-by: Ovidiu Panait Reviewed-by: Maxime Chevallier --- v2 changes: - Advertised NETIF_F_HW_VLAN_STAG_RX and NETIF_F_HW_VLAN_STAG_FILTER only when dma_cap.dvlan is set (reported by Sashiko). drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/ne= t/ethernet/stmicro/stmmac/stmmac_main.c index 16fe56a1f617..880cf3fab913 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -6820,6 +6820,9 @@ static int stmmac_vlan_update(struct stmmac_priv *pri= v, bool is_double) if (!netif_running(priv->dev)) return 0; =20 + if (!priv->dma_cap.dvlan) + is_double =3D false; + return stmmac_update_vlan_hash(priv, priv->hw, hash, is_double); } =20 @@ -7954,14 +7957,18 @@ static int __stmmac_dvr_probe(struct device *device, ndev->watchdog_timeo =3D msecs_to_jiffies(watchdog); #ifdef STMMAC_VLAN_TAG_USED /* Both mac100 and gmac support receive VLAN tag detection */ - ndev->features |=3D NETIF_F_HW_VLAN_CTAG_RX | NETIF_F_HW_VLAN_STAG_RX; + ndev->features |=3D NETIF_F_HW_VLAN_CTAG_RX; + if (priv->dma_cap.dvlan) + ndev->features |=3D NETIF_F_HW_VLAN_STAG_RX; + if (dwmac_is_xmac(priv->plat->core_type)) { ndev->hw_features |=3D NETIF_F_HW_VLAN_CTAG_RX; priv->hw->hw_vlan_en =3D true; } if (priv->dma_cap.vlhash) { ndev->features |=3D NETIF_F_HW_VLAN_CTAG_FILTER; - ndev->features |=3D NETIF_F_HW_VLAN_STAG_FILTER; + if (priv->dma_cap.dvlan) + ndev->features |=3D NETIF_F_HW_VLAN_STAG_FILTER; } if (priv->dma_cap.vlins) ndev->features |=3D NETIF_F_HW_VLAN_CTAG_TX; --=20 2.34.1 From nobody Mon Sep 28 12:34:46 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11010067.outbound.protection.outlook.com [52.101.228.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF61742E423; Fri, 21 Aug 2026 17:10:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.67 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332234; cv=fail; b=c95iDgzhgd/H3zyrWwbRltJYE3kY/7q0BCZH7Yw0NfWqAtvPdyGbTSRm9Tnzgv2wdTt8/mz0A8Kl9UU8wyzv77E87B8KmTWwiraLJrW4SUH2oDrvDxwllKkc9vVhwAxdzyAkrwVxcZKhX7PXcEL4yzOYT6hVoGsIoUX+bzusqoc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332234; c=relaxed/simple; bh=1SFKp2BkeSsWiBFYhdaiy9zh3VCxPs7YkEgTJvBEEO4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=iS052cZGX8A42zi3+v0AMHHRI5s4QMkJ6DPc0keSYGilNtHV5DGpnYymT/LVXYdd+j+A9zyMmSIhJUaOos+nhU9nDonslrG2t+XB6EmpUrE7UX+VQ/IUobW8FRHG2p+CqmrYNIIZkRB74GQFbZArMVUTqKJy6auxc0+FaLbfsIA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=pgQUa5bm; arc=fail smtp.client-ip=52.101.228.67 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="pgQUa5bm" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Tyttzk3sk9IfTYzqNCil8PX8EFip9ZVhTDi8ScfIyEdjflflH6DkiNaIGN2JXE12tguhIQDGzmJiFaj6+ef3M7Iwq0UN5Eeu6AX7cHcJoh5TVwBDFChCZGKjcXUzFnSTFGvBXzZdGIoMyCAjFA6h1bpJ1njk8srYesMawZqeJuTKfkdkdTJSF0Lpf3Oj9kAYeu4G74HPsZg9U/v8fTRaG4+xQMOoclgEIDddN4onv7E1S/eVEIfWHxwR8uzo4zlTn9x6CdAFD80jNMxbw6PAmJQsv6lfjY6HLAyOXGIA+JoMVk741FKSm8LilRlhbW1LQeCaLEOYydFDdZPEnveNLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=P5h6t3MwxwJv6t22KXsGtSYnMXB/EIyfh5902o8eaxo=; b=n/GqbSqTvy6iEJeBZ/UwrdJknX73xlaKw4i2v5aL+LC41G6MiacdI6JnpMZLrNJ83rvdYZOUQylsWvxp7UGr+zKG3ksIk3rG3vJBFZVwWpucf49bWaalv6zowGQogI7XOi0+O9T9Kl3YbQj1K8MHWXHKKm/Yc+8UCUwjj1tZT1LWOcekt8rQAlUl2qdVcxrkcFlaNMV/0u5KK/Wb34bAgJgxtSMltKCVAj8fn9EjpgzQh2H5myYPxg2EKPZrO+LaaTkvGwuSQv3xs8s/07zblMeNImP06AfC5tHsSfl6cXPVyv2JUaYeDbpVsrka8c0H+NsGJaf7XBnZ1U3JWIGVWA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=bootlin.com smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=P5h6t3MwxwJv6t22KXsGtSYnMXB/EIyfh5902o8eaxo=; b=pgQUa5bm6XGHG1YSX6bfmCJh8blP/vOifjlGJiK2qCNe2Iak2SUhy6uWDoBxH1OCUwcfT8u5KT8cn68XfMeyCQJ6dNp1SyALxjyStD/HckTeCvFAkapG3dz309v+6ZtpgW9WR/NPoNBNpxy7tuMHdBGx1avh0GQdmgu0ByyBNZo= Received: from TYCP286CA0040.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29d::15) by OS9PR01MB16457.jpnprd01.prod.outlook.com (2603:1096:604:2bd::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.11; Fri, 21 Aug 2026 17:10:28 +0000 Received: from TY1PEPF0000BAD8.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29d:cafe::62) by TYCP286CA0040.outlook.office365.com (2603:1096:400:29d::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.11 via Frontend Transport; Fri, 21 Aug 2026 17:10:28 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay005p.adwin.renesas.com; pr=E Received: from ejcrelay005p.adwin.renesas.com (8.62.32.50) by TY1PEPF0000BAD8.mail.protection.outlook.com (10.167.240.37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.3 via Frontend Transport; Fri, 21 Aug 2026 17:10:26 +0000 Received: from vm01.adwin.renesas.com (DEU-5CG20946WF.adwin.renesas.com [10.226.92.76]) by ejcrelay005p.adwin.renesas.com (Postfix) with ESMTP id 4802730001F8; Sat, 22 Aug 2026 02:10:21 +0900 (JST) From: Ovidiu Panait To: maxime.chevallier@bootlin.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, shuah@kernel.org, joabreu@synopsys.com, yi.fang.gan@intel.com, jun.ann.lai@intel.com Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org, Ovidiu Panait Subject: [PATCH net v2 3/6] net: stmmac: Move double VLAN handling to a dedicated op Date: Fri, 21 Aug 2026 17:09:56 +0000 Message-ID: <20260821170959.79708-4-ovidiu.panait.rb@renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> References: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY1PEPF0000BAD8:EE_|OS9PR01MB16457:EE_ X-MS-Office365-Filtering-Correlation-Id: 0e2175ef-fa21-408a-4f83-08deffa7187a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|82310400026|1800799024|376014|23010399003|7416014|22082099003|18002099003|56012099006|11063799006|10067099003|921020; X-Microsoft-Antispam-Message-Info: CicOuP8yftll6oXyqyAb1cwUSmX2whw4M+83W+0YortkwP8jwcrVwUZb3u8Elni4/Qikg/wFsKKHIC7YWt+VNi25YCRptEAP4QQsXDGipJQF+culTdWcv7TyM/0NapqO4/m0lshn4hkkhpx3e3//jfhPm0vVcjhpSOKNhY8jrLUc+YD5Tit6LdIDl6aGfJVZGdxD7wD5zNsG0lB9TA8Sr+UXHTo+gJUDXLd0tPVinZ+9Jl2OT9qJg20OthCnDqsv0UJcaYJJ4ErEyRi2FKyyvtgtTzR2kbpK6DVE3LKq/+TvmbYki5D3nbCOqrkbMW91mavY3wSZ/K8My21muOo07LEi1ApowrCg8k7t6nbfDyzuJsjFntN7mp8Kw6FYBoUwiafpy9iwKK5cs5K26Ub8IiAIr9mVqIoMgLnoIHyH62ih20A9oiKE+Vm05HNttI4iMtBBNxgWpO2UNYPzOycXL8hMu6NnEQ85QlBdJ8RvGeiswijCGxfaef43ZD9Zggg3DfPceqmT8h/yG3QyNr6agCYUWsanMOGW5idD8rBIRLbrcZFgEBkWqfrvZa60kvnghf048om8eFmH3mznOz4kZhlS9knX+tPESEYfXMvC7JCz78G6PHjqAvh69PORuIqRavfQ5ua1b5UIv/orjSOBNH2lGcKYN6rZEavJ/FGLN7AAMMdCix9iUFuFaWbPs57C7MW1Yzpi/dMK3O20a5bw+dmhjOV8Ztn/0YLakovmWf6b3F7BGEahhUV+5B1Ae765 X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay005p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(82310400026)(1800799024)(376014)(23010399003)(7416014)(22082099003)(18002099003)(56012099006)(11063799006)(10067099003)(921020);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: N2vV1tscMVAKjAaPpjn+MlqKxXaM7xjLe97AhfjuXG1LjsWceDFyLa2JtIrRVtEJhsr2sFE04G7YWbANP7aoVVY8kKpvJtc5LNGqElmQHRtK1MCX2Uy1o3tIkpYPXcZdQE7G7p/BryJrKLVi1SmlzRZS3t5Fslx3T32+YmVBsC6D2IQVCzsEb2jY3zpwhJsaeL2DqPLwxZU57uOJrZm44+ZS/PKZerqpLnJaAoAAHSckePEs6MmYSBqFnlSRNIWQFCaieN7y/we1HhrACPiQ64h+JNEDn2uTVBqPiU64cZbVHUjAemnaovZQ/DaIRXkdwEXkEJ1scyZ/w9koM8d3o/9/dKAiP+k/YKBs1SjW9ZlLotg1uAwcxDR50xmXrZtq+Jy3nFGuiv0UQRS6xg0DgkE6u1sUjp2WG8WdDVBdtJsoyK4Jzvt2886TED5mqRo6 X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Aug 2026 17:10:26.7955 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0e2175ef-fa21-408a-4f83-08deffa7187a X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay005p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TY1PEPF0000BAD8.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9PR01MB16457 Content-Type: text/plain; charset="utf-8" The double VLAN bits (EDVLP, ESVL, DOVLTC) are currently handled inside update_vlan_hash(). This ties the double VLAN state to the hash filter update, even though the two features are independent: hash filtering is controlled by dma_cap.vlhash and double vlan by dma_cap.dvlan. In preparation for removing double vlan support from dwmac4, move the double vlan logic into a separate update_dvlan_state() VLAN operation. Signed-off-by: Ovidiu Panait Reviewed-by: Maxime Chevallier --- v2 changes: None. drivers/net/ethernet/stmicro/stmmac/hwif.h | 6 ++- .../net/ethernet/stmicro/stmmac/stmmac_main.c | 6 +-- .../net/ethernet/stmicro/stmmac/stmmac_vlan.c | 45 ++++++++----------- 3 files changed, 25 insertions(+), 32 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/hwif.h b/drivers/net/ether= net/stmicro/stmmac/hwif.h index 6f26dbf95ce1..66837caafa84 100644 --- a/drivers/net/ethernet/stmicro/stmmac/hwif.h +++ b/drivers/net/ethernet/stmicro/stmmac/hwif.h @@ -632,8 +632,8 @@ struct stmmac_est_ops { =20 struct stmmac_vlan_ops { /* VLAN */ - void (*update_vlan_hash)(struct mac_device_info *hw, u32 hash, - bool is_double); + void (*update_vlan_hash)(struct mac_device_info *hw, u32 hash); + void (*update_dvlan_state)(struct mac_device_info *hw, bool enable); void (*enable_vlan)(struct mac_device_info *hw, u32 type); void (*rx_hw_vlan)(struct mac_device_info *hw, struct dma_desc *rx_desc, struct sk_buff *skb); @@ -650,6 +650,8 @@ struct stmmac_vlan_ops { =20 #define stmmac_update_vlan_hash(__priv, __args...) \ stmmac_do_void_callback(__priv, vlan, update_vlan_hash, __args) +#define stmmac_update_dvlan_state(__priv, __args...) \ + stmmac_do_void_callback(__priv, vlan, update_dvlan_state, __args) #define stmmac_enable_vlan(__priv, __args...) \ stmmac_do_void_callback(__priv, vlan, enable_vlan, __args) #define stmmac_rx_hw_vlan(__priv, __args...) \ diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/ne= t/ethernet/stmicro/stmmac/stmmac_main.c index 880cf3fab913..802f9e67a4bc 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -6820,10 +6820,10 @@ static int stmmac_vlan_update(struct stmmac_priv *p= riv, bool is_double) if (!netif_running(priv->dev)) return 0; =20 - if (!priv->dma_cap.dvlan) - is_double =3D false; + if (priv->dma_cap.dvlan) + stmmac_update_dvlan_state(priv, priv->hw, is_double); =20 - return stmmac_update_vlan_hash(priv, priv->hw, hash, is_double); + return stmmac_update_vlan_hash(priv, priv->hw, hash); } =20 /* FIXME: This may need RXC to be running, but it may be called with BH diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c b/drivers/ne= t/ethernet/stmicro/stmmac/stmmac_vlan.c index 983a90cb9767..1e47ae62093e 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c @@ -161,8 +161,20 @@ static void vlan_restore_hw_rx_fltr(struct net_device = *dev, vlan_write_filter(dev, hw, i, hw->vlan_filter[i]); } =20 -static void vlan_update_hash(struct mac_device_info *hw, u32 hash, - bool is_double) +static void vlan_update_dvlan_state(struct mac_device_info *hw, bool enabl= e) +{ + void __iomem *ioaddr =3D hw->pcsr; + u32 value; + + value =3D readl(ioaddr + VLAN_TAG); + if (enable) + value |=3D VLAN_EDVLP | VLAN_ESVL | VLAN_DOVLTC; + else + value &=3D ~(VLAN_EDVLP | VLAN_ESVL | VLAN_DOVLTC); + writel(value, ioaddr + VLAN_TAG); +} + +static void vlan_update_hash(struct mac_device_info *hw, u32 hash) { void __iomem *ioaddr =3D hw->pcsr; u32 value; @@ -173,21 +185,9 @@ static void vlan_update_hash(struct mac_device_info *h= w, u32 hash, =20 if (hash) { value |=3D VLAN_VTHM | VLAN_ETV; - if (is_double) { - value |=3D VLAN_EDVLP; - value |=3D VLAN_ESVL; - value |=3D VLAN_DOVLTC; - } else { - value &=3D ~VLAN_EDVLP; - value &=3D ~VLAN_ESVL; - value &=3D ~VLAN_DOVLTC; - } - writel(value, ioaddr + VLAN_TAG); } else { value &=3D ~(VLAN_VTHM | VLAN_ETV); - value &=3D ~(VLAN_EDVLP | VLAN_ESVL); - value &=3D ~VLAN_DOVLTC; value &=3D ~VLAN_VID; =20 writel(value, ioaddr + VLAN_TAG); @@ -236,8 +236,7 @@ static void vlan_set_hw_mode(struct mac_device_info *hw) writel(value, ioaddr + VLAN_TAG); } =20 -static void dwxgmac2_update_vlan_hash(struct mac_device_info *hw, u32 hash, - bool is_double) +static void dwxgmac2_update_vlan_hash(struct mac_device_info *hw, u32 hash) { void __iomem *ioaddr =3D hw->pcsr; =20 @@ -253,15 +252,6 @@ static void dwxgmac2_update_vlan_hash(struct mac_devic= e_info *hw, u32 hash, value =3D readl(ioaddr + VLAN_TAG); =20 value |=3D VLAN_VTHM | VLAN_ETV; - if (is_double) { - value |=3D VLAN_EDVLP; - value |=3D VLAN_ESVL; - value |=3D VLAN_DOVLTC; - } else { - value &=3D ~VLAN_EDVLP; - value &=3D ~VLAN_ESVL; - value &=3D ~VLAN_DOVLTC; - } =20 value &=3D ~VLAN_VID; writel(value, ioaddr + VLAN_TAG); @@ -275,8 +265,6 @@ static void dwxgmac2_update_vlan_hash(struct mac_device= _info *hw, u32 hash, value =3D readl(ioaddr + VLAN_TAG); =20 value &=3D ~(VLAN_VTHM | VLAN_ETV); - value &=3D ~(VLAN_EDVLP | VLAN_ESVL); - value &=3D ~VLAN_DOVLTC; value &=3D ~VLAN_VID; =20 writel(value, ioaddr + VLAN_TAG); @@ -285,6 +273,7 @@ static void dwxgmac2_update_vlan_hash(struct mac_device= _info *hw, u32 hash, =20 const struct stmmac_vlan_ops dwmac_vlan_ops =3D { .update_vlan_hash =3D vlan_update_hash, + .update_dvlan_state =3D vlan_update_dvlan_state, .enable_vlan =3D vlan_enable, .add_hw_vlan_rx_fltr =3D vlan_add_hw_rx_fltr, .del_hw_vlan_rx_fltr =3D vlan_del_hw_rx_fltr, @@ -295,11 +284,13 @@ const struct stmmac_vlan_ops dwmac_vlan_ops =3D { =20 const struct stmmac_vlan_ops dwxlgmac2_vlan_ops =3D { .update_vlan_hash =3D dwxgmac2_update_vlan_hash, + .update_dvlan_state =3D vlan_update_dvlan_state, .enable_vlan =3D vlan_enable, }; =20 const struct stmmac_vlan_ops dwxgmac210_vlan_ops =3D { .update_vlan_hash =3D dwxgmac2_update_vlan_hash, + .update_dvlan_state =3D vlan_update_dvlan_state, .enable_vlan =3D vlan_enable, .add_hw_vlan_rx_fltr =3D vlan_add_hw_rx_fltr, .del_hw_vlan_rx_fltr =3D vlan_del_hw_rx_fltr, --=20 2.34.1 From nobody Mon Sep 28 12:34:46 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11010015.outbound.protection.outlook.com [52.101.228.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D1FAC381B15; Fri, 21 Aug 2026 17:10:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332240; cv=fail; b=na1kDl2LHSr6h9bCuHspmQx1L8JZue8sFEPq+BJuWW6citopsGn0s0d5ZJ93hSG3iIipRpd1ub4XSkpWNp1tZFUe7BrPTG02/pWfyDIqM2kwVZEtoW0ny5eA8367clXmHOVEoFx14npfaNKq2gZMgQLX5jCdqXnbOsfN7k3iyYY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332240; c=relaxed/simple; bh=/DhvZMMRsOg0m3MBjyJOLXnal5gW8pL48XhNxCG0fzQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=SZVGEGd4fkPzYQjmxWfi5lyjEBqrB2KTHFmuGl3cqm51FbTzgr0laQVu1Euxcnv0kXzil6R541jq68uuGeva3krBhLDGkQSWRawLbEhlL8o3jMis+AFfUcFyHIw02+pgYiTpByDD+42vcnqbJ8pOKRkWT69rhd22amhVgmbMOrw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=RPNsysRO; arc=fail smtp.client-ip=52.101.228.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="RPNsysRO" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eVcP2zGPCnm4vcnPvFLCpl+K4ANxHs2AidYbd8gbvjyxRypS/98uOgHUTkkgOVblPg7Dcefo25Ce+28pbODXNQfhUkk7g82f8rEsU+r/S2AyQQdD6N4FN880l1lm+jRNKrX2JT8nTYOJRd/jPixVL78oGD9PNvPnLcuNmXISm3gNmElm4YJ0RyJKXxJG3CtjaSqeiagLbERXY0vDQZY2x7QuU5bDpfbfr2nHcOO9gq5WDDn92OHWHUedt4bZrEXlodFgLJpmhhVyKObzYEuTJDT6p7JMkv1ravzkEIfoOPiRtFVVqhsNJ3U4roilWNHFQBFzyUCrbyOpU3MaK8krDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Jas4TyojczodV7pJshoLSCFJZSnDKs3YfqNAEDpETl4=; b=HzFrjXdF/RsTOMYXsBUhiR5LvpD98CiHtc2WIDtULUiZMfcDyPFd8f2/YDjzjhd/aeEAAHUIXqvC9sghOiwLebspB/ynOz+8rZEcw9U+wp2QHNZkB7l/9pCJghDVbX4Y1lo+xnnXqTO84YD6D7PcR60a9UABHG+EEMdIH5J8YyYL5pxuwiwJf29opFmFqd58CPu6Yfo49K7l6svymLf0fPNCOzQF3jhFgDIXmp9I6VbHqTeZlgBWkzdv+DeY1VWZSTGw3WyFT0q3UqF5AWf6zmgy2L3h5c9/qYhGpUe2BwUIZyIMaGCNPcS9mKKFO0xorxn9dDuzhYXOk2cHEHKI/A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=bootlin.com smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Jas4TyojczodV7pJshoLSCFJZSnDKs3YfqNAEDpETl4=; b=RPNsysROHlr8a+OsD+fbppwKPwLsk86Bj3cbLy91+7/JzsIR8pQEBLKx6SOGfLEj8zOHr6+ZWLKyTOxrg8A7Y0bUmOuLtqpMUs8ymJRZXhibIFJcl8ajsnw8Yg/0SjYGP5fGIkTUvg7Cu0Ut/pnP0R1R07rr3ufPx9wnT8m0NWw= Received: from TY6PR01CA0021.jpnprd01.prod.outlook.com (2603:1096:405:3bb::9) by TYCPR01MB7220.jpnprd01.prod.outlook.com (2603:1096:400:f7::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.11; Fri, 21 Aug 2026 17:10:33 +0000 Received: from TYO1EPF00005020.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:3bb:cafe::35) by TY6PR01CA0021.outlook.office365.com (2603:1096:405:3bb::9) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.11 via Frontend Transport; Fri, 21 Aug 2026 17:10:33 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay005p.adwin.renesas.com; pr=E Received: from ejcrelay005p.adwin.renesas.com (8.62.32.50) by TYO1EPF00005020.mail.protection.outlook.com (10.167.240.5) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.3 via Frontend Transport; Fri, 21 Aug 2026 17:10:32 +0000 Received: from vm01.adwin.renesas.com (DEU-5CG20946WF.adwin.renesas.com [10.226.92.76]) by ejcrelay005p.adwin.renesas.com (Postfix) with ESMTP id 494BD30001F7; Sat, 22 Aug 2026 02:10:27 +0900 (JST) From: Ovidiu Panait To: maxime.chevallier@bootlin.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, shuah@kernel.org, joabreu@synopsys.com, yi.fang.gan@intel.com, jun.ann.lai@intel.com Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org, Ovidiu Panait Subject: [PATCH net v2 4/6] net: stmmac: Disable double VLAN handling on dwmac4 Date: Fri, 21 Aug 2026 17:09:57 +0000 Message-ID: <20260821170959.79708-5-ovidiu.panait.rb@renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> References: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYO1EPF00005020:EE_|TYCPR01MB7220:EE_ X-MS-Office365-Filtering-Correlation-Id: bcbb054a-c2c4-43b1-0d21-08deffa71c13 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|7416014|82310400026|1800799024|23010399003|921020|3023799007|56012099006|10067099003|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 3A7r+KdbOQYetU7ksipEIDu50IBU+JW6mF3WbajGppe/MD75Y0+U0oHGsABbqFDMDxeqB9LukeFi3T9hgYpvB5ujsJ/+bXws/S44Dfh+aBuHwI12flzRmZwnMrrsXt8Bg71h7Gtx2Fd6KiVInMap59iXfh1sizFId4eMfZP2Ci7nmy8Vn7+vBcdeac1h6RLn6M4zKseNtToiFvBY67ogxCv6x2FA3d847dTkqQKGDngYG8YtNSr0FHB9pYBf42FSRumAxUQVNbGPTnzAT8gRVFNS7wLy1evCGc1uZ229BV+dwGij/ZQRoqIoz2I1WCrFuo1gyu+DF741b6a4IcNqlBtRWPEschTive/gTKxfYt1ej81KtqmFY7F5kTWpmAHQKgVl0s7XNf7CstbIoUy3cxWCswHVhMDiEQ8EY4T+w4uQNAJkXDoZrT4zJ+GV3Uiq+vbbx3Mse3ljKkb8l/D4TEfU5MxvwswDZCrfrVyS2X7uLJ1+fMQ8ygGpXaG2wqHBbohco0EMfEXHPPn0C88OWk+mdY0694aYFBZ7RSWLaCyzJfyIsSfdROG97z9JsRIgvxnCkN7LGtLjsSUgW8P0Ab6ub/TOLlyX7EzbvZ8OWO/rYomIRqR9CleB4PmAj4Tw0h6Ii1QvPn70UUBzenoJQFOxBj8Z/nikPLAY4loewPUcXTQpN/SsJm07oRXnioSFbTNVKKwFNNwyhF0a6oaN4kWxs0C0feN2YXwGqC9PL88uM14svppXjZiCBb6Q7oxp X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay005p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(7416014)(82310400026)(1800799024)(23010399003)(921020)(3023799007)(56012099006)(10067099003)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7afduiXfMZCdgStMvBCoB2f7HZzVLjioQhlpGLJtMlZqL8n9rrjDMrPYm3g3aZP4fi0HSBTpgavuDWoEajpKb0k4EMnouZe9LIvrz/rd6/FHQGQsy514u9tWGNpbboiGKWy5zaBpownuBeo3FCp0HsT4Q6T0Z9SsRsCGSDbO3SW2GcKFVbVCh+uPMpJV6wR7bjt81XDwUBBKC37JOFEppDyqRL/EQlADYMSx8y6I5gFEjwzoUvqE6N1f7JxPNaC3kYJmbkpwaJVQqA3z9BQIbe7FNxG7IjaBCnOEIp2nGMURNIqOwHuw/Z/eHAlYr+3mzs2CgZi7umY9SbvUmkab4P4jclEW93yJWV2kpAaGme/6K8ddD+fAVYFbHe1ocwwG10cEoZJuImjqo4rnIKOZo6HXpLWd7c37ic7QhujETbsZkfu+nXd7HfpXieSt88VC X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Aug 2026 17:10:32.8315 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bcbb054a-c2c4-43b1-0d21-08deffa71c13 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay005p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TYO1EPF00005020.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYCPR01MB7220 Content-Type: text/plain; charset="utf-8" Currently, hardware VLAN stripping is broken for 802.1ad tags. vlan_rx_hw() hardcodes ETH_P_8021Q when putting the hardware tag into the skb, rather than using the actual protocol from the packet. Because of this, packets that contain a 802.1ad outer tag are incorrectly passed up the stack as having an 802.1Q tag. This causes QinQ ping between two hosts to fail. vlan_rx_hw() is shared by dwxgmac2 and dwmac4: on dwxgmac2 the tag type is available in the RDES3 write-back descriptor (the ET_LT field), so the outer tag type can be determined based on that info. However, dwmac4 doesn't seem to provide the tag type. The Length/Type field in RDES3 only indicates whether the packet is single or double-tagged, not which tag type was stripped. Since dwmac4 cannot report the stripped tag type, it cannot support hardware double VLAN stripping correctly. Disable it by dropping update_dvlan_state from dwmac_vlan_ops. With this, 802.1ad tags are left in place and handled by the software VLAN path. Also, restrict the NETIF_F_HW_VLAN_STAG_RX and NETIF_F_HW_VLAN_STAG_FILTER advertisement to dwxgmac2. Fixes: 750011e239a5 ("net: stmmac: Add support for HW-accelerated VLAN stri= pping") Signed-off-by: Ovidiu Panait --- v2 changes: - Advertised NETIF_F_HW_VLAN_STAG_RX and NETIF_F_HW_VLAN_STAG_FILTER only for XGMAC (reported by Sashiko). drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 ++++-- drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/ne= t/ethernet/stmicro/stmmac/stmmac_main.c index 802f9e67a4bc..7cfd14007d60 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -7958,7 +7958,8 @@ static int __stmmac_dvr_probe(struct device *device, #ifdef STMMAC_VLAN_TAG_USED /* Both mac100 and gmac support receive VLAN tag detection */ ndev->features |=3D NETIF_F_HW_VLAN_CTAG_RX; - if (priv->dma_cap.dvlan) + if (priv->dma_cap.dvlan && + priv->plat->core_type =3D=3D DWMAC_CORE_XGMAC) ndev->features |=3D NETIF_F_HW_VLAN_STAG_RX; =20 if (dwmac_is_xmac(priv->plat->core_type)) { @@ -7967,7 +7968,8 @@ static int __stmmac_dvr_probe(struct device *device, } if (priv->dma_cap.vlhash) { ndev->features |=3D NETIF_F_HW_VLAN_CTAG_FILTER; - if (priv->dma_cap.dvlan) + if (priv->dma_cap.dvlan && + priv->plat->core_type =3D=3D DWMAC_CORE_XGMAC) ndev->features |=3D NETIF_F_HW_VLAN_STAG_FILTER; } if (priv->dma_cap.vlins) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c b/drivers/ne= t/ethernet/stmicro/stmmac/stmmac_vlan.c index 1e47ae62093e..9b5b3f11f699 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_vlan.c @@ -273,7 +273,6 @@ static void dwxgmac2_update_vlan_hash(struct mac_device= _info *hw, u32 hash) =20 const struct stmmac_vlan_ops dwmac_vlan_ops =3D { .update_vlan_hash =3D vlan_update_hash, - .update_dvlan_state =3D vlan_update_dvlan_state, .enable_vlan =3D vlan_enable, .add_hw_vlan_rx_fltr =3D vlan_add_hw_rx_fltr, .del_hw_vlan_rx_fltr =3D vlan_del_hw_rx_fltr, --=20 2.34.1 From nobody Mon Sep 28 12:34:46 2026 Received: from OS0P286CU011.outbound.protection.outlook.com (mail-japanwestazon11010024.outbound.protection.outlook.com [52.101.228.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 593EC381B15; Fri, 21 Aug 2026 17:10:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.228.24 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332247; cv=fail; b=TE0pb0LDTJtJLeRNKdbFQFGpP4QxqzACfJOENeHnPZx5+h/hfWB4sGFKZfAKl2Jl6VabAPEx6y0FNdFHrxr78lF5zyVr7uMfDTZWn9uZVAHX7obnP5PGAN+/ypIf5eD7pOUJq8N2bqUKUwQUPJw8X5PVQqlG6hifCzxucpxvyKM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332247; c=relaxed/simple; bh=AVb5X/hQ5E3MwHkIsccjUzOCnMaVHIhBsq1EOyyeyaA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=CwaoqeDlNpf9aEUv8d0qk1HfGSafKlkQaKlM6UEG1QeNuIV/mAKBUGc07efwGwlnxEKqyVAGRLfcfVOXLSpkvfsrIwZ8pqOJdttLmW+trwB2RZyEoUKkPkjzK7oHuz5G3MhpNj2sz7n2U3pCDW7yuyaJJ8jTe4ooe2bI0GVJpdE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=RKr6M2lC; arc=fail smtp.client-ip=52.101.228.24 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="RKr6M2lC" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=n8vXDnhsebZLwmknDwrrfHfDfPiHI9GGM/UU+bJw/kaPJH3AyM9OzWCDm3Nyc3AzNbFxorNeF2bcUijLYKiHXdUPv5Prx085BZX/aKjhhSASGWaixXFBEPp3mWKqHdkHq4Jm/qOUtPILFJBgdHZJjamwaVTkSdxjyABqkdyHBDCzsnfrQEQhgBKRFKWzXgozM9XAKccdvNQR5vJcckDKzEAw5g3EGNtqKMF3N36snTbeb8kJddneACfU1RjB0du9Hcj0psskbsXUBIwAnLz26VRDCyGxt+wDE6P8MtyD05wAlt4X//pnXQK8M70oYzsgBCAgF3lHH69dmE8YTGJ+Rw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DcpTrhg3lW92t7EDN5F4YzBdgvOw/eo+jCajvRhWRvg=; b=ZSxbTMcjvOfkgblma+13RkfKL9VVGFBNdK3GYxzXdGeU+9gwqaIlDTRsa1LIQzP2VHrEsxU9Moo9AE+gmmRb7XIyXOuCnKfskRT7GOyfotYq/GZ0Y/xUhvn2andGY28c8Ilg+J29KIhpKXN1Ya5mnX5hwGwIpY+7UKVJf/KOOqIFjjoaSOqIZ1LiQBFZ/ubh9Xruph4rAmVoGbdnC1tY61MjXt/3ThDAOQwvUk78JCmaC3RlKKRJICsJCFlIWR2V1gDB4/x2pw7OzJE2c/xNyGdCpB9KY/hDDfJqNG25dIejKzlfdoFM9cAv2V1LCcQCtw/oiRG39EEMH53bk2uYBg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=bootlin.com smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DcpTrhg3lW92t7EDN5F4YzBdgvOw/eo+jCajvRhWRvg=; b=RKr6M2lCS/wDuN52HNoaMnGSROWUje4Ax4NUGR1dyS4OH98W8eYjcFgORpFPWMntf+mUoPuYtygIq36qBfGEAiJOnIQk9EqYi55ZbZFrve3L8n0ZYIVZc1JLeR6noqKm5ULdbeylNiX8IvdCLduKEy7UGio6GOWvmlaZkHvhufs= Received: from OS0P286CA0009.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:9c::14) by TY3PR01MB10268.jpnprd01.prod.outlook.com (2603:1096:400:1dd::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.11; Fri, 21 Aug 2026 17:10:40 +0000 Received: from OS1PEPF0000D20E.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:9c:cafe::6c) by OS0P286CA0009.outlook.office365.com (2603:1096:604:9c::14) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.11 via Frontend Transport; Fri, 21 Aug 2026 17:10:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay005p.adwin.renesas.com; pr=E Received: from ejcrelay005p.adwin.renesas.com (8.62.32.50) by OS1PEPF0000D20E.mail.protection.outlook.com (10.167.240.37) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.3 via Frontend Transport; Fri, 21 Aug 2026 17:10:38 +0000 Received: from vm01.adwin.renesas.com (DEU-5CG20946WF.adwin.renesas.com [10.226.92.76]) by ejcrelay005p.adwin.renesas.com (Postfix) with ESMTP id 4956630001FA; Sat, 22 Aug 2026 02:10:33 +0900 (JST) From: Ovidiu Panait To: maxime.chevallier@bootlin.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, shuah@kernel.org, joabreu@synopsys.com, yi.fang.gan@intel.com, jun.ann.lai@intel.com Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org, Ovidiu Panait Subject: [PATCH net v2 5/6] selftests: drv-net: Move _set_ethtool_feat() into lib Date: Fri, 21 Aug 2026 17:09:58 +0000 Message-ID: <20260821170959.79708-6-ovidiu.panait.rb@renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> References: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS1PEPF0000D20E:EE_|TY3PR01MB10268:EE_ X-MS-Office365-Filtering-Correlation-Id: f0615b32-07ab-4958-5fdc-08deffa71fae X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|7416014|82310400026|1800799024|23010399003|921020|6133799003|56012099006|10067099003|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: i6jbElQ9NeB9JQga9zf7sRD4dyhkPcDeEYFL2pHbrjGsv6AZbu9hl2IzDT0BICBTHfmVQXHHzz2q1gzmX1fanuTo6MtTJBYlzfrtylRU1/jgStSqRUFyNKVAMOus6YA+lCmKQhkCI2tpho0nc2wkjCWa+sgYP0CG35nNaRwggFsYv0cIembORfJ1hJHFpSexJhqSDo39bdJXa9oTWZj5rjfEhQTkxbQfWUrnCWv4UhDaNWUG4JJdv/LJojGKkDfpUzq5kHlxhNQMN9f0wHS5L7rr9ysCP1HJqZY34BrCGaq8DQNsM0Z5k6g/sZ0TlDuin1+qouWf8oPDNI+jMwJjCubR+Yw5TbF+mYJbs6aOIzT2tscfMLEvd5NdIGdALa4D7BXLu2tzAXdsCs5qSQbel9RSGH3LBeABM/2sJFVkVkpZ5Bz8yuuJ+VYyvWr1tZ9npROVq0Y/9MVUg+zZUodlNBSxLvKNaxXJ6R5lhVqJWW+lSHvXXdWy91RgUbLJLVwUGc+mGsQsv8vYzZWK60T2LLU66xV37BAIobfVSKoFVMOhhdkWoYz9GErBmpVjHK7mOmDyDTqtzz0Wf4qXImY2kIaw1iPMV5HLoXVjh3nGwacxTCIfOPgyYDGa25VPN71Q6IyXkAeR6d+ZZLtrUPVB1/TJZeEf9jgYeRRnhRcjJ5LHiYS8leGfAFjNIfeFzZyj/O6BabelnBKI/P5Mr1/Kj3cjtZM8UG7+BZ8m8cCbwBnyQ90sIDclqaLHBw52YQMQ X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay005p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(7416014)(82310400026)(1800799024)(23010399003)(921020)(6133799003)(56012099006)(10067099003)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: w/lacDwlWE7cpI1IOIanMqhFXY79OqWUT6JdQAF7X/0jkAcy/8tSEU+G8HdXUiP4R+pwCla6t+5y3eFgbDxNC/HEDo/L37EclfAJ/lDC/WRMM2urc4L/4dwef3+xB21crUUFvtfRSbxcjzG50Y/X4pQg1FhaD21kJNdF8Rw8kyijWmqcId6rOQMRPZXOqk+JlSleQ/UFoyrfx90lbPF9Uj4Jb88b6CBnFLa3tF5NELfveugCUdklyPyPG+TSwVoyOPCWftHEan/PxZW+HpJybBG4/95S2EkaqKJERCEb8oQxjcecgqnnCj+abyf1koXAfIifj6B0+yQPRIz3bdI95oIkkjuabOFrsYHlYJlBTQlc1mdil190x7/RVqu2VuD10eYP3vB/TTVm58aOUw9tzMXZ4JUGkldOn3cRMKjPb8rGfTZY2Do69kLEeo+DIyAD X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Aug 2026 17:10:38.8710 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f0615b32-07ab-4958-5fdc-08deffa71fae X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay005p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: OS1PEPF0000D20E.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY3PR01MB10268 Content-Type: text/plain; charset="utf-8" Move the _set_ethtool_feat() helper from gro.py into lib, so that it can be reused by the VLAN test added in the next commit. Drop the leading underscore, now that the helper is exported. Signed-off-by: Ovidiu Panait --- v2 changes: - New patch. tools/testing/selftests/drivers/net/gro.py | 65 ++++++------------- .../selftests/drivers/net/lib/py/__init__.py | 3 +- .../selftests/drivers/net/lib/py/feat.py | 37 +++++++++++ 3 files changed, 59 insertions(+), 46 deletions(-) create mode 100644 tools/testing/selftests/drivers/net/lib/py/feat.py diff --git a/tools/testing/selftests/drivers/net/gro.py b/tools/testing/sel= ftests/drivers/net/gro.py index 6ab8c97880d1..051a3b2d0ead 100755 --- a/tools/testing/selftests/drivers/net/gro.py +++ b/tools/testing/selftests/drivers/net/gro.py @@ -42,7 +42,7 @@ import re from lib.py import ksft_run, ksft_exit, ksft_pr from lib.py import NetDrvEpEnv, KsftFailEx, KsftXfailEx from lib.py import NetdevFamily, EthtoolFamily -from lib.py import bkg, cmd, defer, ethtool, ip +from lib.py import bkg, cmd, defer, ethtool, ip, set_ethtool_feat from lib.py import ksft_variants, KsftNamedVariant =20 =20 @@ -96,31 +96,6 @@ def _set_mtu_restore(dev, mtu, host): defer(ip, f"link set dev {dev['ifname']} mtu {dev['mtu']}", host= =3Dhost) =20 =20 -def _set_ethtool_feat(dev, current, feats, host=3DNone): - s2n =3D {True: "on", False: "off"} - - new =3D ["-K", dev] - old =3D ["-K", dev] - no_change =3D True - for name, state in feats.items(): - new +=3D [name, s2n[state]] - old +=3D [name, s2n[current[name]["active"]]] - - if current[name]["active"] !=3D state: - no_change =3D False - if current[name]["fixed"]: - raise KsftXfailEx(f"Device does not support {name}") - if no_change: - return - - eth_cmd =3D ethtool(" ".join(new), host=3Dhost) - defer(ethtool, " ".join(old), host=3Dhost) - - # If ethtool printed something kernel must have modified some features - if eth_cmd.stdout: - ksft_pr(eth_cmd) - - def _get_queue_stats(cfg, queue_id): """Get stats for a specific Rx queue.""" cfg.wait_hw_stats_settle() @@ -247,15 +222,15 @@ def _setup(cfg, mode, test_name): _write_defer_restore(cfg, flush_path, "200000", defer_undo=3DTrue) _write_defer_restore(cfg, irq_path, "10", defer_undo=3DTrue) =20 - _set_ethtool_feat(cfg.ifname, cfg.feat, - {"generic-receive-offload": True, - "rx-gro-hw": False, - "large-receive-offload": False}) + set_ethtool_feat(cfg.ifname, cfg.feat, + {"generic-receive-offload": True, + "rx-gro-hw": False, + "large-receive-offload": False}) elif mode =3D=3D "hw": - _set_ethtool_feat(cfg.ifname, cfg.feat, - {"generic-receive-offload": False, - "rx-gro-hw": True, - "large-receive-offload": False}) + set_ethtool_feat(cfg.ifname, cfg.feat, + {"generic-receive-offload": False, + "rx-gro-hw": True, + "large-receive-offload": False}) =20 # Some NICs treat HW GRO as a GRO sub-feature so disabling GRO # will also clear HW GRO. Use a hack of installing XDP generic @@ -270,27 +245,27 @@ def _setup(cfg, mode, test_name): # Attaching XDP may change features, fetch the latest state feat =3D ethtool(f"-k {cfg.ifname}", json=3DTrue)[0] =20 - _set_ethtool_feat(cfg.ifname, feat, - {"generic-receive-offload": True, - "rx-gro-hw": True, - "large-receive-offload": False}) + set_ethtool_feat(cfg.ifname, feat, + {"generic-receive-offload": True, + "rx-gro-hw": True, + "large-receive-offload": False}) elif mode =3D=3D "lro": # netdevsim advertises LRO for feature inheritance testing with # bonding/team tests but it doesn't actually perform the offload cfg.require_nsim(nsim_test=3DFalse) =20 - _set_ethtool_feat(cfg.ifname, cfg.feat, - {"generic-receive-offload": False, - "rx-gro-hw": False, - "large-receive-offload": True}) + set_ethtool_feat(cfg.ifname, cfg.feat, + {"generic-receive-offload": False, + "rx-gro-hw": False, + "large-receive-offload": True}) =20 try: # Disable TSO for local tests cfg.require_nsim() # will raise KsftXfailEx if not running on nsim =20 - _set_ethtool_feat(cfg.remote_ifname, cfg.remote_feat, - {"tcp-segmentation-offload": False}, - host=3Dcfg.remote) + set_ethtool_feat(cfg.remote_ifname, cfg.remote_feat, + {"tcp-segmentation-offload": False}, + host=3Dcfg.remote) except KsftXfailEx: pass =20 diff --git a/tools/testing/selftests/drivers/net/lib/py/__init__.py b/tools= /testing/selftests/drivers/net/lib/py/__init__.py index ee903bcf3207..c261aac2b976 100644 --- a/tools/testing/selftests/drivers/net/lib/py/__init__.py +++ b/tools/testing/selftests/drivers/net/lib/py/__init__.py @@ -48,11 +48,12 @@ try: "ksft_not_none", "ksft_not_none"] =20 from .env import NetDrvEnv, NetDrvEpEnv, NetDrvContEnv + from .feat import set_ethtool_feat from .load import GenerateTraffic, Iperf3Runner from .remote import Remote =20 __all__ +=3D ["NetDrvEnv", "NetDrvEpEnv", "NetDrvContEnv", "GenerateTr= affic", - "Remote", "Iperf3Runner"] + "Remote", "Iperf3Runner", "set_ethtool_feat"] except ModuleNotFoundError as e: print("Failed importing `net` library from kernel sources") print(str(e)) diff --git a/tools/testing/selftests/drivers/net/lib/py/feat.py b/tools/tes= ting/selftests/drivers/net/lib/py/feat.py new file mode 100644 index 000000000000..33b4895059df --- /dev/null +++ b/tools/testing/selftests/drivers/net/lib/py/feat.py @@ -0,0 +1,37 @@ +# SPDX-License-Identifier: GPL-2.0 + +""" +Netdev feature helper utilities for kernel selftests. + +Provides common operations for changing device features via ethtool, +used by driver test files. +""" + +from lib.py import KsftXfailEx +from lib.py import ksft_pr +from lib.py import defer, ethtool + + +def set_ethtool_feat(dev, current, feats, host=3DNone): + s2n =3D {True: "on", False: "off"} + + new =3D ["-K", dev] + old =3D ["-K", dev] + no_change =3D True + for name, state in feats.items(): + new +=3D [name, s2n[state]] + old +=3D [name, s2n[current[name]["active"]]] + + if current[name]["active"] !=3D state: + no_change =3D False + if current[name]["fixed"]: + raise KsftXfailEx(f"Device does not support {name}") + if no_change: + return + + eth_cmd =3D ethtool(" ".join(new), host=3Dhost) + defer(ethtool, " ".join(old), host=3Dhost) + + # If ethtool printed something kernel must have modified some features + if eth_cmd.stdout: + ksft_pr(eth_cmd) --=20 2.34.1 From nobody Mon Sep 28 12:34:46 2026 Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011041.outbound.protection.outlook.com [40.107.74.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4028E38330B; Fri, 21 Aug 2026 17:10:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332252; cv=fail; b=lt9ZzPGpEDXSXYFVlN49t1fJiXO72+koxoZ+5eY8DFWP1RGkbz2UxdWtJGhYuIrbfKCanbArUjwrAyvs1LALbeVf8n9avoqg88Lx0XfBKIJgdOSRSk+p45MhkcPJQKJCgnszzX0ziJyBXjdwm5qUXJqReTD6a1wYyK+1tmoyHYk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787332252; c=relaxed/simple; bh=hK4bAaRZrfAIc1DAP0RBIhaIOfD/48fuPRkR4vsj2oA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=E3b0SsZ8ec33mcWf+s6ZjHfOItzqYp4NtX/nsiSyognv9DCk7rrQDslqCNJI8u5Qs3hmXumV7HazToU7GEqu9D+taav18TM9lk3AjqokCmXKP/ABgzBMzzUzvszQ+NvbJdeLSr6X1Y1G1KBGrq/V8Mj1H/xUOlNT3CzBq3QvAro= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=KUqMPliE; arc=fail smtp.client-ip=40.107.74.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="KUqMPliE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=e1EuAMWHf9N2PTAh7asJaI/RWOLjunp2ZmE3U0IkJT5OjlzdCO44Ry3O8bkrbM8hKMhzGtWJPN6JNsoONS22Af/5GyKM7/D+RkimNmkqSWNxdOY3WoXPGSUeQcZiZwhOfseIQLRCov2tKd2b59XtiWy6JW9P3Skq0B8JvrfjzPhWnkJ5AeTZUKWcV3XRjeqmrstjszZetsUWc+FRzKnJOjlW6rYuxoGvrrWuSZhlF8ywnMl8Q2VqHuX/FfOJVE/78hUqnmPnG2YLzsg1qNOKe4oLWE/pvSB8apR70Ed6R3lQm83QczV1GUn6qSR5FIccKuA1Kl2He5b0oIxMUstMAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=SRr0TzpF53PaZtIYcVOkvN9p2lYiIMAe1RKswjGZ/OM=; b=tsQKB2vUsadkO1yiPM69FmCT2alFh+x8pbJO9phOiXAaAqCAFqagbW2gEx7SrEJuEufAzGNECnx6TEZj/A7q3keIfVhSgsIvH3OFZOvtuHh1heL42SMzvKR9yjmIZ1Zd9bPr8SlU6c2+aomur//AsoVY7BOf36GO/zfh4oaEevbDBAYsPZlY1dNDIQG5wvgQq+17ekS1Z28WQ8oyoRowFWgcKjqilTlIH4ZQsAFBVMPfAlIWs+YyRNaoHH+ZBbVscgSvCfqk07FuCWTXhX4kdRchIqjwv4gDzje/XMjrcGZk0JAxnRXwnzVYfmL8lA1/gtFUQpWufI/QYl62NPAe6w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 8.62.32.50) smtp.rcpttodomain=bootlin.com smtp.mailfrom=renesas.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=renesas.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SRr0TzpF53PaZtIYcVOkvN9p2lYiIMAe1RKswjGZ/OM=; b=KUqMPliENB5do6Uv8c5+pTXFAGRGeaHwtqShvuCR24sQWCHLFudIHaD9BJNhG5ryfQw4rZi1bFt11FMYwWqEsf9G+OuxYuBTNUWvIC3n9ZmnL5IhvDIBokPn9VXLCPojv65PammS+dPM2/N1lz15naRGkVZwdPOCWw/c6i7NJ64= Received: from TY4P286CA0140.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:37f::7) by OS7PR01MB17563.jpnprd01.prod.outlook.com (2603:1096:604:441::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.339.11; Fri, 21 Aug 2026 17:10:46 +0000 Received: from TY2PEPF00005622.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:37f:cafe::f) by TY4P286CA0140.outlook.office365.com (2603:1096:405:37f::7) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.339.11 via Frontend Transport; Fri, 21 Aug 2026 17:10:46 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 8.62.32.50) smtp.mailfrom=renesas.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=renesas.com; Received-SPF: Pass (protection.outlook.com: domain of renesas.com designates 8.62.32.50 as permitted sender) receiver=protection.outlook.com; client-ip=8.62.32.50; helo=ejcrelay005p.adwin.renesas.com; pr=E Received: from ejcrelay005p.adwin.renesas.com (8.62.32.50) by TY2PEPF00005622.mail.protection.outlook.com (10.167.240.53) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.360.3 via Frontend Transport; Fri, 21 Aug 2026 17:10:44 +0000 Received: from vm01.adwin.renesas.com (DEU-5CG20946WF.adwin.renesas.com [10.226.92.76]) by ejcrelay005p.adwin.renesas.com (Postfix) with ESMTP id 4A11630001F6; Sat, 22 Aug 2026 02:10:39 +0900 (JST) From: Ovidiu Panait To: maxime.chevallier@bootlin.com, andrew+netdev@lunn.ch, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, mcoquelin.stm32@gmail.com, alexandre.torgue@foss.st.com, shuah@kernel.org, joabreu@synopsys.com, yi.fang.gan@intel.com, jun.ann.lai@intel.com Cc: linux-kernel@vger.kernel.org, netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org, linux-kselftest@vger.kernel.org, Ovidiu Panait Subject: [PATCH net v2 6/6] selftests: drv-net: Add VLAN test Date: Fri, 21 Aug 2026 17:09:59 +0000 Message-ID: <20260821170959.79708-7-ovidiu.panait.rb@renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> References: <20260821170959.79708-1-ovidiu.panait.rb@renesas.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TY2PEPF00005622:EE_|OS7PR01MB17563:EE_ X-MS-Office365-Filtering-Correlation-Id: 0b7da9a1-f421-4246-9ceb-08deffa72337 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700016|376014|7416014|82310400026|1800799024|23010399003|921020|6133799003|3023799007|56012099006|10067099003|11063799006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 1MQhYnvDRZzYdeFXu1Z3GIV27Wl4VoYYEPafWEEGDtiUbCkhjXI1J9+mnNSq4i6wmWSHPS5UvysZaBK/r+bZivY5j0EfaFA689iCG+k9bGas+lJvES0SKpBUXUq8XmZ6+AW+D97vzPlnA8wn7MqXx6krCs/ewf+lo/W2j8RTYyMXrbCFEF2I5B7fjDVK64UYW/RQWaOerdNKsbZkEj3gY1jQjQCpl/rbDpdNNRYYt8NHqkNmeK5n4UlwJBHDXMXM5BC55l/FGHJIyVDxkjLS0SsUUSyd0yHfts0tbdlQdnrnFUJoYQAALUJOkvB5ZVxOaKfR8MQfLTbDWCJ0y4O7hNEqTz4npTpG4SwaXJ6dy2mUOEXd2PErkSF3Lssn6lcpdPS+bsl0Ut+/5I1DMyH0CsZQUB2dOYLk6mcFnjcmksmNGzTi47KMwHzID27C5n7vV3NkaAzBUTAkqJMBx87z4P2FUCsBQ6zV1PowDeD0NWTY0/iaDXprNe+lS8FBksd7KV5ANktlZl8++UKXa0CxX5UVsKj+KxrerhsecRAaIZL75l5r/ooeRX+WLddBLJ0I/7itVpumSVTLc4YdM5pHqIfHuFMExoo6032wm+nlmOVjwthFQ9dp2n4FA85H5F4+0S8Y/W4ec+GBEbmcgBzfs3+0M2t5zxnwN94yQb3AENEN0MHZY/vdbs6V0JyfbRNXSzhbsm7SOOlX00O6J6eqbpjiJMazoNeST9xyHdupqKbsBEPC8xksMQLO+APWQ5sw X-Forefront-Antispam-Report: CIP:8.62.32.50;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:ejcrelay005p.adwin.renesas.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700016)(376014)(7416014)(82310400026)(1800799024)(23010399003)(921020)(6133799003)(3023799007)(56012099006)(10067099003)(11063799006)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: eI4KyESr01/CxVTtydMA+pX2i5EIIH6tnAa3jeglh5dtB4e23b1BRnm+fkPcfGqed+wwId3ZmcZrfaU5bPzs8qhjqXpxZ0PEyyXowYgW7EZtjDlMCSvzD0uxiYyY/Nb6ct9IAKgzsthOwukU0tAJNQwbAEj7eFRqQbt2ncIlQnVIALeSmRxCM5em0zhs4ypI1QJpk/Zo67RoQ//hsVSLWUamTP5OsM6ZA3aOxhiiQFzMDFgmVP7wLfoDRtu+4tVo04Kjsq4njFLU8JxdJNbY9fFe3G2VhCYSQfFZIvR+9qF41IJVF8Xtoc0TEusqcribmX3AmIeRLNxpKesY3qRwtDi6DnI11wlwMr1caQqiGn9JNB3ovSOVnu+Q32l7sJgYG8id+FD8++og3zhJYNvOB3v8eOi+eh9+1XYNBufhuFEaBoIrxqD0YpvLHE/oppnl X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Aug 2026 17:10:44.8150 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0b7da9a1-f421-4246-9ceb-08deffa72337 X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=53d82571-da19-47e4-9cb4-625a166a4a2a;Ip=[8.62.32.50];Helo=[ejcrelay005p.adwin.renesas.com] X-MS-Exchange-CrossTenant-AuthSource: TY2PEPF00005622.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7PR01MB17563 Content-Type: text/plain; charset="utf-8" Add a test that validates ping traffic over VLAN interfaces. It aims to catch drivers which mishandle hardware VLAN tag stripping, in particular QinQ. Three VLAN configurations are covered, each with hardware VLAN stripping enabled and disabled: - a single 802.1q VLAN interface - a single 802.1ad VLAN interface - an 802.1q VLAN stacked on top of an 802.1ad interface NETIF=3Dend1 LOCAL_V4=3D172.16.0.2 REMOTE_V4=3D172.16.0.3 \ REMOTE_TYPE=3Dssh REMOTE_ARGS=3Droot@172.16.0.3 \ run_kselftest.sh -t drivers/net:vlan.py TAP version 13 1..1 # timeout set to 360 # selftests: drivers/net: vlan.py # # Interface: end0, driver: st_gmac # TAP version 13 # 1..6 # ok 1 vlan.test.8021q_hw # ok 2 vlan.test.8021q_sw # ok 3 vlan.test.8021ad_hw # ok 4 vlan.test.8021ad_sw # ok 5 vlan.test.qinq_hw # ok 6 vlan.test.qinq_sw # # Totals: pass:6 fail:0 xfail:0 xpass:0 skip:0 error:0 ok 1 selftests: drivers/net: vlan.py # Totals: pass:1 fail:0 xfail:0 xpass:0 skip:0 error:0 Signed-off-by: Ovidiu Panait --- v2 changes: - New patch. tools/testing/selftests/drivers/net/Makefile | 1 + tools/testing/selftests/drivers/net/vlan.py | 100 +++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100755 tools/testing/selftests/drivers/net/vlan.py diff --git a/tools/testing/selftests/drivers/net/Makefile b/tools/testing/s= elftests/drivers/net/Makefile index d5bf4cb638a8..56c1dc16f8e9 100644 --- a/tools/testing/selftests/drivers/net/Makefile +++ b/tools/testing/selftests/drivers/net/Makefile @@ -24,6 +24,7 @@ TEST_PROGS :=3D \ shaper.py \ so_txtime.py \ stats.py \ + vlan.py \ xdp.py \ # end of TEST_PROGS =20 diff --git a/tools/testing/selftests/drivers/net/vlan.py b/tools/testing/se= lftests/drivers/net/vlan.py new file mode 100755 index 000000000000..82822a4b7bb5 --- /dev/null +++ b/tools/testing/selftests/drivers/net/vlan.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: GPL-2.0 + +""" +VLAN tests. + +Validates that ping traffic is sent and received correctly over 802.1q +and 802.1ad VLAN interfaces, with hardware VLAN stripping enabled and +disabled. + +Test cases: + - 8021q_hw: Traffic over a single 802.1q VLAN, HW stripping on + - 8021q_sw: Traffic over a single 802.1q VLAN, HW stripping off + - 8021ad_hw: Traffic over a single 802.1ad VLAN, HW stripping on + - 8021ad_sw: Traffic over a single 802.1ad VLAN, HW stripping off + - qinq_hw: Traffic over an 802.1q VLAN stacked on an 802.1ad VLAN, + HW stripping on + - qinq_sw: Traffic over an 802.1q VLAN stacked on an 802.1ad VLAN, + HW stripping off +""" + +import os +from lib.py import ksft_run, ksft_exit +from lib.py import NetDrvEpEnv +from lib.py import cmd, defer, ethtool, ip, set_ethtool_feat +from lib.py import ksft_variants, KsftNamedVariant + +OUTER_DEV =3D f"vlout{os.getpid()}" +INNER_DEV =3D f"vlin{os.getpid()}" + +OUTER_VID =3D 100 +INNER_VID =3D 200 + +LOCAL_IP =3D "198.51.100.1" +REMOTE_IP =3D "198.51.100.2" + + +def _vlan_add(base, name, proto, vid, host=3DNone): + """Create a VLAN device on top of base and bring it up.""" + + ip(f"link add link {base} name {name} type vlan proto {proto} id {vid}= ", + host=3Dhost) + defer(ip, f"link del {name}", host=3Dhost) + ip(f"link set {name} up", host=3Dhost) + + +def _vlan_setup(base, addr, outer_proto, inner_proto, host=3DNone): + """Create VLAN interfaces on base and set an IP on the innermost one."= "" + + _vlan_add(base, OUTER_DEV, outer_proto, OUTER_VID, host=3Dhost) + if inner_proto: + _vlan_add(OUTER_DEV, INNER_DEV, inner_proto, INNER_VID, host=3Dhos= t) + + dev =3D INNER_DEV if inner_proto else OUTER_DEV + ip(f"addr add {addr}/24 dev {dev}", host=3Dhost) + + +def _setup(cfg, outer_proto, inner_proto, hw_strip): + """Configure VLAN stripping and create the VLAN interfaces.""" + + feat =3D ethtool(f"-k {cfg.ifname}", json=3DTrue)[0] + set_ethtool_feat(cfg.ifname, feat, {"rx-vlan-offload": hw_strip}) + + _vlan_setup(cfg.ifname, LOCAL_IP, outer_proto, inner_proto) + _vlan_setup(cfg.remote_ifname, REMOTE_IP, outer_proto, inner_proto, + host=3Dcfg.remote) + + +def _vlan_variants(): + """Generator that yields the VLAN protocols and the stripping mode.""" + + yield KsftNamedVariant("8021q_hw", "802.1q", None, True) + yield KsftNamedVariant("8021q_sw", "802.1q", None, False) + yield KsftNamedVariant("8021ad_hw", "802.1ad", None, True) + yield KsftNamedVariant("8021ad_sw", "802.1ad", None, False) + yield KsftNamedVariant("qinq_hw", "802.1ad", "802.1q", True) + yield KsftNamedVariant("qinq_sw", "802.1ad", "802.1q", False) + + +@ksft_variants(_vlan_variants()) +def test(cfg, outer_proto, inner_proto, hw_strip): + """Run a single VLAN test""" + + cfg.require_ipver("4") + + _setup(cfg, outer_proto, inner_proto, hw_strip) + + cmd(f"ping -c 1 -W 5 {REMOTE_IP}") + + +def main() -> None: + """ Ksft boiler plate main """ + + with NetDrvEpEnv(__file__) as cfg: + ksft_run(cases=3D[test], args=3D(cfg, )) + ksft_exit() + + +if __name__ =3D=3D "__main__": + main() --=20 2.34.1