From nobody Mon Sep 28 04:53:45 2026 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) (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 C3B64265606; Wed, 26 Aug 2026 14:05:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.85.4 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753132; cv=none; b=Afb7QmQRy1gnJgb1R0Vr19p28tL/3hW8RVpR3xMMzJYOM1O6RQAAL0nuL0+C/BdCrW0U8k6IzJAx3QZdTlxXUQizhzsJHDS5Lgm5zg9Mf3xiEEMefLZQZ8zA1Ji1ZEP3RqF/zE7NrJv3lPFGlg5M3eKLbagm2anXKBtyzE8IIG0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753132; c=relaxed/simple; bh=qlelEtOskWaj7RpLhhZxKBC3ijuhPSxI3GLSC6+HIkc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ly3JddsE/xs93Bn+gP5zj8DHCq4UCNvr/W6VqV5EYhaHGBvcwktoc92aznN8J4YPhij+MMmS5smbUsiXJhgETUEDfs3e3A3INLD+mwEu+Zxk1pWNyS74iXKRobotn8hb/QdyW1WT1zItxehtVuikcT7dLXGnw05xbgq49+ZgLc0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=hAxFsAcc; arc=none smtp.client-ip=185.246.85.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="hAxFsAcc" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id 2F9894E413AA; Wed, 26 Aug 2026 14:05:26 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 03299604EC; Wed, 26 Aug 2026 14:05:26 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 637E111C78258; Wed, 26 Aug 2026 16:05:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1787753124; h=from:subject:date:message-id:to:cc:mime-version: content-transfer-encoding:in-reply-to:references; bh=VhEMOZBfPvbotP4mJSctwIV46O5jNxmqqQ0vWmXGO/4=; b=hAxFsAcctP44imj+TPmS83tKVy954AaLdZ6ZOaamcFulcx2Dv+BfCTL0JFfMKXyhyxOs06 RD3Q6d3DcjqmXUO8ZPVisXab+E1YuEG66+91F4AZvwCkr0Kl73teud7EfNc2V/7PKbtySC ZOVtmDanBzNt8nfIyRmfF/UbyeKGR/3gJXJxdrexq1fvIAInuXcl4NBmbI7kqrzI1jeFQT Hmc8WY344a5M7shEiur0U2TS147N3l9nRyByeKjt+wkTYS0JS7WbWcX4EEqCyvk1J/gU2Y 7ASpstgnDMgvmGK8nqiqPsMZoT8PIvtLD823WSA8//sX9eYR8I+coDUG1EQWyA== From: Maxime Chevallier To: Andrew Lunn , davem@davemloft.net, Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Heiner Kallweit , =?UTF-8?q?Alexis=20Lothor=C3=A9?= , Maxime Coquelin , Alexandre Torgue , Emil Renner Berthing , Minda Chen , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Jan Petrous , Ovidiu Panait , Jose.Abreu@synopsys.com Cc: Maxime Chevallier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com Subject: [PATCH net 1/6] net: stmmac: selftests: Check multiple MMC counters Date: Wed, 26 Aug 2026 16:04:53 +0200 Message-ID: <20260826140500.616466-2-maxime.chevallier@bootlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260826140500.616466-1-maxime.chevallier@bootlin.com> References: <20260826140500.616466-1-maxime.chevallier@bootlin.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-Last-TLS-Session-Version: TLSv1.3 Content-Type: text/plain; charset="utf-8" The MMC counters report MAC statistics. Multiple counters can be enabled when the IP is integrated, however there's no way to know exactly which ones. Un-implemented counters seem to report 0. It was found that on StarFive JH7110 and Amlogic SM1, the counter that's used by the selftest (mmc_tx_framecount_g) isn't implemented, triggering an MMC selftest failure. Both the above SoCs seem to implement mmc_rx_framecount_gb, let's use this counter as well for MMC counter validation. Note that this doesn't guarantee that we won't encounter the same issue again if another IP implements yet another set of counters that don't include that new one. If the game of whack-a-mole with implemented counters becomes too hard to maintain, we may simply consider removing the MMC selftest entirely. Fixes: 091810dbded9 ("net: stmmac: Introduce selftests support") Signed-off-by: Maxime Chevallier Reviewed-by: Andrew Lunn --- .../net/ethernet/stmicro/stmmac/stmmac_selftests.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c b/drive= rs/net/ethernet/stmicro/stmmac/stmmac_selftests.c index a2b917dd60e5..14db0c0e0ba9 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c @@ -395,11 +395,17 @@ static int stmmac_test_mmc(struct stmmac_priv *priv) stmmac_mmc_read(priv, priv->mmcaddr, &final); =20 /* - * The number of MMC counters available depends on HW configuration - * so we just use this one to validate the feature. I hope there is - * not a version without this counter. + * The number of MMC counters available depends on HW configuration, + * and there doesn't seem to be a way to enumerate the implemented + * counters. + * + * Let's check a hand-picked set of counters, knowing that : + * - Starfive JH7110 doesn't implement mmc_tx_framecount_g + * - Amlogic SM1 doesn't implement any mmc_tx_* + * */ - if (final.mmc_tx_framecount_g <=3D initial.mmc_tx_framecount_g) + if (final.mmc_tx_framecount_g <=3D initial.mmc_tx_framecount_g && + final.mmc_rx_framecount_gb <=3D initial.mmc_rx_framecount_gb) return -EINVAL; =20 return 0; --=20 2.55.0 From nobody Mon Sep 28 04:53:45 2026 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) (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 267E63C1090; Wed, 26 Aug 2026 14:05:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.85.4 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753132; cv=none; b=UOSiHwsh3TrpefT6rJrPofuB8DPCQxjAvM/Q9H44G7ckiJfOCJAZcmHzt/zh3DRmsNvt+0WGd8973Ro/klHdPSyH6q4PQwrqbtydogCMDA2Zp4fS6xmXmJhX59X/RyA/8WAROhj0L63708QfSWIbYpEyTC6ggwW1z7eaVa+/a9s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753132; c=relaxed/simple; bh=wMZ3zdjuEmxaXf9Jx5bIuFR4PBN9IYnWOls2LFmIIBc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Bx4DZ0Fe+a6QGvSxBqOs6UGKgIEpLi1zx43jFWPj/VPMsSwxkl7MHoWr13e61cGs029OJsMv9CnbFhHXBbhz1PYkzbbsA4PBqYpzCsC2tCATqPGARDKNXuPKZTkGoNeKwtvLLg/V7j2wDgNk4RD8nFvIXdNOWARyeTxbRxurpts= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=FfjLbO66; arc=none smtp.client-ip=185.246.85.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="FfjLbO66" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id 96F354E413C5; Wed, 26 Aug 2026 14:05:29 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 63D0C604EC; Wed, 26 Aug 2026 14:05:29 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id BF0B511C78266; Wed, 26 Aug 2026 16:05:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1787753127; h=from:subject:date:message-id:to:cc:mime-version: content-transfer-encoding:in-reply-to:references; bh=Zzj4GVc4/x2SELeaKUar7dAIv8TFPTU4PPNQ7zCE1Ak=; b=FfjLbO664rsEBix13EAJ7rDB6BedWoXbIoLiMiDoGGVO9GskY0XSHj0MNByvCpwj/BC4MH H5q5XGbiBe/WvP8CGoLk1+m+OlWSAIhEiggprCjdKirInkVJekII270a1bc9Gi2twAk/aC Wu5fCfpKA2egZZol0QidPvAQipS15aUTMgs/VkS4ljodqE6bs/6i2JgUofj5E5WUJf1c96 AjiDE3E8daeVA1fZv7QEGqQWT9b3Zz3l0QXZ0rW41JtZWWaRgtX844qbH/nEIv45mjx2+/ xj/AJrxpYZUwynLVQMdss3HRmWj5uMRvP5ZVP1m9mgCjXqurDNKvCnwI4dXGig== From: Maxime Chevallier To: Andrew Lunn , davem@davemloft.net, Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Heiner Kallweit , =?UTF-8?q?Alexis=20Lothor=C3=A9?= , Maxime Coquelin , Alexandre Torgue , Emil Renner Berthing , Minda Chen , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Jan Petrous , Ovidiu Panait , Jose.Abreu@synopsys.com Cc: Maxime Chevallier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com Subject: [PATCH net 2/6] net: stmmac: dwmac1000: Account for the primary MAC address for UC filtering Date: Wed, 26 Aug 2026 16:04:54 +0200 Message-ID: <20260826140500.616466-3-maxime.chevallier@bootlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260826140500.616466-1-maxime.chevallier@bootlin.com> References: <20260826140500.616466-1-maxime.chevallier@bootlin.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-Last-TLS-Session-Version: TLSv1.3 Content-Type: text/plain; charset="utf-8" The same filter slots are used to store the main MAC address as well as the address for the unicast filter. Let's account for that when deciding whether or not to use promisc when programming the UC list in hardware. Fixes: 47dd7a540b8a ("net: add support for STMicroelectronics Ethernet cont= rollers.") Signed-off-by: Maxime Chevallier Reviewed-by: Andrew Lunn --- drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c b/drivers= /net/ethernet/stmicro/stmmac/dwmac1000_core.c index caac85fc08f1..d4ace3924891 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c @@ -194,7 +194,7 @@ static void dwmac1000_set_filter(struct mac_device_info= *hw, dwmac1000_set_mchash(ioaddr, mc_filter, mcbitslog2); =20 /* Handle multiple unicast addresses (perfect filtering) */ - if (netdev_uc_count(dev) > perfect_addr_number) + if (netdev_uc_count(dev) + 1 > perfect_addr_number) /* Switch to promiscuous mode if more than unicast * addresses are requested than supported by hardware. */ --=20 2.55.0 From nobody Mon Sep 28 04:53:45 2026 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (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 C86023998A6 for ; Wed, 26 Aug 2026 14:05:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753142; cv=none; b=Ya67Jx5KUvI51U+wkUeUVajNZa5bNoOBKgFmvM6S6KnaILNluNm5p6x6xycYcpfqGhHLCUw4RlJsnbDq/wQHUfGyiu2cbXz8NiwsrySQ+lvu39mPDZ4hWNI7/1GlZ1I+OfWH7aj1mS89DA8wKK3wHS7n/OAibOZadURN4EB2oWE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753142; c=relaxed/simple; bh=5iBwju5rljP7nXZu5dwnozCtAUGhCs+NT0ktthRf5rw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=qeCRBviaYH2Lpm+ZkYNRgGvA58GN9KZG+T6mVkQx9zdv1zpzlS5Ano4K70LvtqQl/LFZ0UAGoPOvXF+8PQfdrvgvYy+S2tyz+2Yf0XmlsAnHkHgynSLmcgucC+ql78E//OCi5G/39p+9jjq9be6wsvZvkoIu5c5Zr88CeisysOQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=px2xu6tm; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="px2xu6tm" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 3A49A1A1849; Wed, 26 Aug 2026 14:05:33 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 052E9604EC; Wed, 26 Aug 2026 14:05:33 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 5D0DE11C78233; Wed, 26 Aug 2026 16:05:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1787753131; h=from:subject:date:message-id:to:cc:mime-version: content-transfer-encoding:in-reply-to:references; bh=9okZtrUEsYcypmkihf73ptQqCKfBdI120oZ7DuDCFIA=; b=px2xu6tmaR9TMoeddIK0ozSjHileMe+rSlnsuHhq4FXKGscskZQRK9uaIlymXwriPCnfOU yAeOLWyQNKGJYaTARnNfjvtCyZSeza0FNdKcL3ECQa6ffJszQqx6v/pZpzUnJtmB+jlTLW PpEXOotKw5+6ai3XOV8ea9KZ/pH9oMkmir10OKKcbrhW8tPUX4XbXqTFfPNctv+/JgR5Jp auzBjv1xBvAA8AtYZ5U6wVM7kQ2JyMsldaXkw0gtV4TluSCQj5Gs2Pe5Ehdhwzvxr1X1Qh /w6GI8ctIgUYpQb39RiT+kcj5QFEdOgUxnKrKG7NcBL5bUCs5fGb1Uy9w9X5xw== From: Maxime Chevallier To: Andrew Lunn , davem@davemloft.net, Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Heiner Kallweit , =?UTF-8?q?Alexis=20Lothor=C3=A9?= , Maxime Coquelin , Alexandre Torgue , Emil Renner Berthing , Minda Chen , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Jan Petrous , Ovidiu Panait , Jose.Abreu@synopsys.com Cc: Maxime Chevallier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com Subject: [PATCH net 3/6] net: stmmac: dwmac4: Account for the primary MAC address for UC filtering Date: Wed, 26 Aug 2026 16:04:55 +0200 Message-ID: <20260826140500.616466-4-maxime.chevallier@bootlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260826140500.616466-1-maxime.chevallier@bootlin.com> References: <20260826140500.616466-1-maxime.chevallier@bootlin.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-Last-TLS-Session-Version: TLSv1.3 Content-Type: text/plain; charset="utf-8" The same filter slots are used to store the main MAC address as well as the address for the unicast filter. Let's account for that when deciding whether or not to use promisc when programming the UC list in hardware. Fixes: 477286b53f55 ("stmmac: add GMAC4 core support") Signed-off-by: Maxime Chevallier Reviewed-by: Andrew Lunn --- drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/ne= t/ethernet/stmicro/stmmac/dwmac4_core.c index c6fcfae27c3d..18b357b257cc 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c @@ -521,7 +521,7 @@ static void dwmac4_set_filter(struct mac_device_info *h= w, value |=3D GMAC_PACKET_FILTER_HPF; =20 /* Handle multiple unicast addresses */ - if (netdev_uc_count(dev) > hw->unicast_filter_entries) { + if (netdev_uc_count(dev) + 1 > hw->unicast_filter_entries) { /* Switch to promiscuous mode if more than 128 addrs * are required */ --=20 2.55.0 From nobody Mon Sep 28 04:53:45 2026 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (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 73E2737E5D4 for ; Wed, 26 Aug 2026 14:05:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753153; cv=none; b=lbVpIItRZ4OUd4TClsUGnbHKzmB7LAoiOqnRZSW02NDyp287OKKLiWFk2OHbZR+uI6P9qqsbtKSm6UU9tryxWib4RETcjorCN/wHyhuiRMd4jkfrl32QI+/Is7LKmZoX9/iiblNi75J53DWigyx+lTkDpUwvh3Qd/wU+MxPizlw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753153; c=relaxed/simple; bh=eSFCFP0zuNBowA0TZRltKaMtk8o3TdazaBeRjmy0+zQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=N+IyWOJJDLNaQoJRfyEy/OY2S0WzcxlgysPrmKGqoGkB4edwFre8RQCT6CkrETOQ/BIq1gwjAtKF8NSJNl9qvyDRaltQhVeIarmr2lp7C2jjVnl6KExPmYlImyu45iDQtgr5BY21V058osRfGT9iJ+Jdkid0+fqoNpFLmLCJfx4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=egoBnJPX; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="egoBnJPX" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 0F7391A1842; Wed, 26 Aug 2026 14:05:41 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id CF529604EC; Wed, 26 Aug 2026 14:05:40 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id 324CE11C781D1; Wed, 26 Aug 2026 16:05:32 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1787753135; h=from:subject:date:message-id:to:cc:mime-version: content-transfer-encoding:in-reply-to:references; bh=fQMkcPMV7Pc6LQCfAGg8QeshWvzbYRluiKAsXmZpmVA=; b=egoBnJPX8pVGNGJ/3jf09wwDrVpQYmxE6gK6/QaJtlZeKxJ+WJAIfQF2YrJLC7f6piN0F5 lcV6WcOe6YGx1W0NDNsgFcATRifpBB4muA99d4y93wdedN1Z+S76KZ2v0ciqIZZJ+Up1EW CFyhdymQ9roAP6C9WeoMK1wWJkGzEF/QAm0DjnKJQelv5Bnpf2W4/jllHqX7LCtqs5EkhK tCiP4dpfIbxyS4XVAJPWmiHBpHzvFNN0UwDtKi4+BdRj5bRu140TDpuekylvhauMyqifwN fVL3P5dEpIFZUgT/EQFCs8dBcqGqwfgx5etPpsiVUzBHUcsXTymZbGPbe/ET8Q== From: Maxime Chevallier To: Andrew Lunn , davem@davemloft.net, Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Heiner Kallweit , =?UTF-8?q?Alexis=20Lothor=C3=A9?= , Maxime Coquelin , Alexandre Torgue , Emil Renner Berthing , Minda Chen , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Jan Petrous , Ovidiu Panait , Jose.Abreu@synopsys.com Cc: Maxime Chevallier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com Subject: [PATCH net 4/6] net: stmmac: dwxgmac: Account for the primary MAC address for UC filtering Date: Wed, 26 Aug 2026 16:04:56 +0200 Message-ID: <20260826140500.616466-5-maxime.chevallier@bootlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260826140500.616466-1-maxime.chevallier@bootlin.com> References: <20260826140500.616466-1-maxime.chevallier@bootlin.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-Last-TLS-Session-Version: TLSv1.3 Content-Type: text/plain; charset="utf-8" The same filter slots are used to store the main MAC address as well as the address for the unicast filter. Let's account for that when deciding whether or not to use promisc when programming the UC list in hardware. Fixes: 0efedbf11f07 ("net: stmmac: xgmac: Fix XGMAC selftests") Signed-off-by: Maxime Chevallier Reviewed-by: Andrew Lunn --- drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c b/drivers/= net/ethernet/stmicro/stmmac/dwxgmac2_core.c index 52054f31376d..fc6ddb51c682 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c @@ -532,7 +532,7 @@ static void dwxgmac2_set_filter(struct mac_device_info = *hw, dwxgmac2_set_mchash(ioaddr, mc_filter, mcbitslog2); =20 /* Handle multiple unicast addresses */ - if (netdev_uc_count(dev) > hw->unicast_filter_entries) { + if (netdev_uc_count(dev) + 1 > hw->unicast_filter_entries) { value |=3D XGMAC_FILTER_PR; } else { struct netdev_hw_addr *ha; --=20 2.55.0 From nobody Mon Sep 28 04:53:45 2026 Received: from smtpout-02.galae.net (smtpout-02.galae.net [185.246.84.56]) (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 B4E4741A92A for ; Wed, 26 Aug 2026 14:05:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.84.56 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753153; cv=none; b=I+V1HRXN5mpymngWw3zzw4zt6RI2dYI9VQypbCSvtrbAOUHcNCRiwOyn+mEkCzDA2bTS5W9r2moB9vU2VxYOeRBZugVAtt6EYzHfgBC8k/iSGl/0hiV6fZdcZxBhc/IlmSyISWSh4Q1Do6Lllnp0AorTzffRkyqT9swWheEJyVM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753153; c=relaxed/simple; bh=8oCXevYhk/nSookb8hJiRtTkWz7E2b/fXiNxjofMLJE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eqthg0o+WfWUu+e4z888VisV3yp5yWBxXhQntC+sNZiZ5GQxkRPTbljLH5EXQduc0NyUfRB8Wn5SrbS+asjG8dYzByw/PP3OlEKnj2BEH8LfBOF/HUS/2lBqyWxK8smWUPlOGEaILEggbisKL5BVw6MU1oPo56iELibnY6jgQSI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=gimNWy8s; arc=none smtp.client-ip=185.246.84.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="gimNWy8s" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-02.galae.net (Postfix) with ESMTPS id 30C7B1A1849; Wed, 26 Aug 2026 14:05:49 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id 0437C604EC; Wed, 26 Aug 2026 14:05:49 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id E3B4211C7829D; Wed, 26 Aug 2026 16:05:39 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1787753143; h=from:subject:date:message-id:to:cc:mime-version: content-transfer-encoding:in-reply-to:references; bh=cXsx1idLiQLmu5OSql9TqufiNEY1QoJGB5nGEjhmbFA=; b=gimNWy8sdrPKRcjYeI0andmUbYgh5R5/mjDuKhTa6Npdd9BSjbq2ZXv/O7vFp4XfpxlvYN zBdvQrG7krBMZQ/CGQ/jXsf+GD/uwvq0NLr1QrWQA5WqAdJQwOzS2QPJyhMwslp/aKsHzN 9JfDNJf81MrTtAn03oaSa7csLbuu+pmQRMehfW3gCetlkdn+c//O0j+YYLQx9Erdw4Pw++ gapElzVfnvCpFogme6oeoyCCHzLIlhJJFvgxhOq1qT9hsa9vSj+gmCtW1+krUaP5zft1za 1wn/GhKnV+j7leqedSEVFAe9POYeQCCUQAhKoKDGlQVVat+yLNZMFgFyamofLQ== From: Maxime Chevallier To: Andrew Lunn , davem@davemloft.net, Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Heiner Kallweit , =?UTF-8?q?Alexis=20Lothor=C3=A9?= , Maxime Coquelin , Alexandre Torgue , Emil Renner Berthing , Minda Chen , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Jan Petrous , Ovidiu Panait , Jose.Abreu@synopsys.com Cc: Maxime Chevallier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com Subject: [PATCH net 5/6] net: stmmac: selftests: Account for the UC filter list for filtering tests Date: Wed, 26 Aug 2026 16:04:57 +0200 Message-ID: <20260826140500.616466-6-maxime.chevallier@bootlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260826140500.616466-1-maxime.chevallier@bootlin.com> References: <20260826140500.616466-1-maxime.chevallier@bootlin.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-Last-TLS-Session-Version: TLSv1.3 Content-Type: text/plain; charset="utf-8" On dwmac, one of the Unicast filter entries is used to store the local HW addr. This means that we have to use promisc mode for any kind of unicast filtering if we only have one slot in our unicast filter. The number of slots available depends on how the IP is integrated, and we can't autodiscover how many of these slots we have available, so the DT property snps,perfect-filter-entries can be used to specify how many are available. Most IP variants default to 1 if this isn't specified, which is the case for the amlogic variants (in this case, S905X3). The stmmac selftests for UC filtering look if we have enough slots in the filter to store the dev->uc list, but doesn't account for the device's own MAC address. The dev->uc list's size we get with netdev_uc_count() also doesn't account for the HW addr. As the selftest only requires one available slot, in the case of single-slot platforms, that means we erroneously consider we have enough room for the test, when we actually don't, and the filtering test fails. Fixes: 091810dbded9 ("net: stmmac: Introduce selftests support") Signed-off-by: Maxime Chevallier Reviewed-by: Andrew Lunn --- .../stmicro/stmmac/stmmac_selftests.c | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c b/drive= rs/net/ethernet/stmicro/stmmac/stmmac_selftests.c index 14db0c0e0ba9..ae236a264e74 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c @@ -479,6 +479,21 @@ static int stmmac_filter_check(struct stmmac_priv *pri= v) return -EOPNOTSUPP; } =20 +static int stmmac_uc_filter_check(struct stmmac_priv *priv) +{ + /* For tests involving the UC filter, we need at least one empty + * slot in the UC filter. The UC filters contains netdev_uc_count() + 1 + * entries: The dev->uc list + one entry for the HW address. + * + * Having an empty slot therefore means netdev_uc_count() + 2 entries + * can fit in the filter + */ + if (netdev_uc_count(priv->dev) + 2 > priv->hw->unicast_filter_entries) + return -EOPNOTSUPP; + + return 0; +} + static bool stmmac_hash_check(struct stmmac_priv *priv, unsigned char *add= r) { int mc_offset =3D 32 - priv->hw->mcast_bits_log2; @@ -570,7 +585,7 @@ static int stmmac_test_pfilt(struct stmmac_priv *priv) =20 if (stmmac_filter_check(priv)) return -EOPNOTSUPP; - if (netdev_uc_count(priv->dev) >=3D priv->hw->unicast_filter_entries) + if (stmmac_uc_filter_check(priv)) return -EOPNOTSUPP; =20 while (--tries) { @@ -614,7 +629,7 @@ static int stmmac_test_mcfilt(struct stmmac_priv *priv) =20 if (stmmac_filter_check(priv)) return -EOPNOTSUPP; - if (netdev_uc_count(priv->dev) >=3D priv->hw->unicast_filter_entries) + if (stmmac_uc_filter_check(priv)) return -EOPNOTSUPP; if (netdev_mc_count(priv->dev) >=3D priv->hw->multicast_filter_bins) return -EOPNOTSUPP; @@ -660,7 +675,7 @@ static int stmmac_test_ucfilt(struct stmmac_priv *priv) =20 if (stmmac_filter_check(priv)) return -EOPNOTSUPP; - if (netdev_uc_count(priv->dev) >=3D priv->hw->unicast_filter_entries) + if (stmmac_uc_filter_check(priv)) return -EOPNOTSUPP; if (netdev_mc_count(priv->dev) >=3D priv->hw->multicast_filter_bins) return -EOPNOTSUPP; --=20 2.55.0 From nobody Mon Sep 28 04:53:45 2026 Received: from smtpout-03.galae.net (smtpout-03.galae.net [185.246.85.4]) (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 5D93D442B09; Wed, 26 Aug 2026 14:05:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.246.85.4 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753156; cv=none; b=G0IzNzFj9mBB9YBU9B5D3a5C/3ML/tU1C9RFCZ1nyRW5O8I4mnkzs4BLEyhUkNRmqqrnCxcEPIhtI4eAB9aaH1PW/gxDlqhWKSFliknGscyig4j4MDR90M8HEAZ1Q4bDJRBUbFMnrrITZ2U+DGEztSJ3XX9sihMoM2yH3g9klow= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787753156; c=relaxed/simple; bh=QalrOhlw7LxMBsxExxguTMp5EXOktmghnEmmEVq+/bw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kv4aIgSkfzZOq15rZGK4ufE+aRbC5bgw1s/Czsmt3k/0YZRD2qUyVpAUu/ZMeS/tTPc5tLFyJafqjePXpRdWG3Qk3h9rDjrPwQ9w2DIfJTtou6T6RGRg+HCg3dzd3kt8Mlybq+i0aFLDSeLiEg5kebTYsCTHX+YhtIXnyDtt+TU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com; spf=pass smtp.mailfrom=bootlin.com; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b=zp0sb5Nt; arc=none smtp.client-ip=185.246.85.4 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=bootlin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bootlin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bootlin.com header.i=@bootlin.com header.b="zp0sb5Nt" Received: from smtpout-01.galae.net (smtpout-01.galae.net [212.83.139.233]) by smtpout-03.galae.net (Postfix) with ESMTPS id EDB354E413AA; Wed, 26 Aug 2026 14:05:53 +0000 (UTC) Received: from mail.galae.net (mail.galae.net [212.83.136.155]) by smtpout-01.galae.net (Postfix) with ESMTPS id BDCE6604EC; Wed, 26 Aug 2026 14:05:53 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPSA id B8E2A11C781D1; Wed, 26 Aug 2026 16:05:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=dkim; t=1787753152; h=from:subject:date:message-id:to:cc:mime-version: content-transfer-encoding:in-reply-to:references; bh=jTVcRgoXd0TFMDrwAr5pQLfwrpfb1OOBZimTG7wdi+M=; b=zp0sb5Nt85Pq6RP/Ym6FrPpaDzguuEsnYxVVPvL+ulOlg1aLgPa9KW3NPK6WK85aYJy2vy ablvBwqdiC3GztzLTVEPNMfMI/KtY+wNyLG1T601BN1NEew7FKVmd77r6SA9qBRAP4I93i HzVjaXSX+/dvAK7AQKQVFXD3ovoIdxkk9lBl5yRBoCN101V1FHWrsglr/u2aMMz6fKn1Cp XSuKpEumd2duW6r3AYZ2EEJgV0e5fy5+KzHnr4qxDbjlOWBX0I9pnamJDt7wy2ZPOWOSTQ GUMBm1wd05uWg54xX0dHWhUtnJ8+TKoUd9QVAo3LvhXvN1lLE4IEF9p4J/jn9g== From: Maxime Chevallier To: Andrew Lunn , davem@davemloft.net, Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Heiner Kallweit , =?UTF-8?q?Alexis=20Lothor=C3=A9?= , Maxime Coquelin , Alexandre Torgue , Emil Renner Berthing , Minda Chen , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Jan Petrous , Ovidiu Panait , Jose.Abreu@synopsys.com Cc: Maxime Chevallier , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, thomas.petazzoni@bootlin.com, linux-arm-kernel@lists.infradead.org, linux-stm32@st-md-mailman.stormreply.com Subject: [PATCH net 6/6] net: stmmac: selftests: Don't test flow control for small rx fifos Date: Wed, 26 Aug 2026 16:04:58 +0200 Message-ID: <20260826140500.616466-7-maxime.chevallier@bootlin.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260826140500.616466-1-maxime.chevallier@bootlin.com> References: <20260826140500.616466-1-maxime.chevallier@bootlin.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-Last-TLS-Session-Version: TLSv1.3 Content-Type: text/plain; charset="utf-8" On dwmac1000, dwmac4 and dwxgmac, we only emit pause frames if there's at least 4096 bytes in each queue's fifo. The phylink mac capabilities are still MAC_ASYM_PAUSE | MAC_SYM_PAUSE as otherwise we won't be able to negotiate 'rx on' pause. ASYM only will prevent negotiating 'rx off tx on', while SYM only doesn't really matche the reality (not symmetric if we can only do RX pause). Fixes: 091810dbded9 ("net: stmmac: Introduce selftests support") Signed-off-by: Maxime Chevallier Reviewed-by: Andrew Lunn --- .../ethernet/stmicro/stmmac/stmmac_selftests.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c b/drive= rs/net/ethernet/stmicro/stmmac/stmmac_selftests.c index ae236a264e74..6372ec7c3f31 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c @@ -739,12 +739,24 @@ static int stmmac_test_flowctrl(struct stmmac_priv *p= riv) u32 rx_cnt =3D priv->plat->rx_queues_to_use; struct mac_device_info *mac =3D priv->hw; struct stmmac_test_priv *tpriv; + unsigned int rx_fifo_size; unsigned int pkt_count; int i, ret =3D 0; =20 if (!(mac->link.caps & MAC_SYM_PAUSE)) return -EOPNOTSUPP; =20 + rx_fifo_size =3D priv->plat->rx_fifo_size; + if (!rx_fifo_size) + rx_fifo_size =3D priv->dma_cap.rx_fifo_size; + + /* No pause frame is emitted if we don't have at least 4096 bytes per + * queue, except on dwmac100. + */ + if (priv->plat->core_type !=3D DWMAC_CORE_MAC100 && + rx_fifo_size / priv->plat->rx_queues_to_use < 4096) + return -EOPNOTSUPP; + tpriv =3D kzalloc_obj(*tpriv); if (!tpriv) return -ENOMEM; @@ -758,9 +770,7 @@ static int stmmac_test_flowctrl(struct stmmac_priv *pri= v) dev_add_pack(&tpriv->pt); =20 /* Compute minimum number of packets to make FIFO full */ - pkt_count =3D priv->plat->rx_fifo_size; - if (!pkt_count) - pkt_count =3D priv->dma_cap.rx_fifo_size; + pkt_count =3D rx_fifo_size; pkt_count /=3D 1400; pkt_count *=3D 2; =20 --=20 2.55.0