lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260205070951.3170631-3-c-vankar@ti.com>
Date: Thu, 5 Feb 2026 12:39:51 +0530
From: Chintan Vankar <c-vankar@...com>
To: Thomas Gleixner <tglx@...nel.org>, Ingo Molnar <mingo@...nel.org>,
	"Vignesh Raghavendra" <vigneshr@...com>, Vadim Fedorenko
	<vadim.fedorenko@...ux.dev>, Matthias Schiffer
	<matthias.schiffer@...tq-group.com>, Nishanth Menon <nm@...com>, Chintan
 Vankar <c-vankar@...com>, Michael Walle <mwalle@...nel.org>, Simon Horman
	<horms@...nel.org>, Roger Quadros <rogerq@...nel.org>, Siddharth Vadapalli
	<s-vadapalli@...com>, Paolo Abeni <pabeni@...hat.com>, Jakub Kicinski
	<kuba@...nel.org>, Eric Dumazet <edumazet@...gle.com>, "David S. Miller"
	<davem@...emloft.net>, Andrew Lunn <andrew+netdev@...n.ch>
CC: <linux-omap@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
	<netdev@...r.kernel.org>
Subject: [PATCH net 2/2] net: ethernet: ti: cpsw_ale: Update multicast entry handling in ALE Table

The current implementation of multicast entry flushing marks all multicast
entries as free whenever any interface adds, deletes, or modifies
multicast entry. It then re-adds the entries, which disrupts existing
multicast connection for other interfaces associated with that entry.

Update multicast flushing API to handle above case by clearing out a bit
in port_mask for that specific interface.

Signed-off-by: Chintan Vankar <c-vankar@...com>
---
 drivers/net/ethernet/ti/cpsw_ale.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/ti/cpsw_ale.c b/drivers/net/ethernet/ti/cpsw_ale.c
index fbe35af615a6..9632ad3741de 100644
--- a/drivers/net/ethernet/ti/cpsw_ale.c
+++ b/drivers/net/ethernet/ti/cpsw_ale.c
@@ -455,14 +455,13 @@ static void cpsw_ale_flush_mcast(struct cpsw_ale *ale, u32 *ale_entry,
 				      ale->port_mask_bits);
 	if ((mask & port_mask) == 0)
 		return; /* ports dont intersect, not interested */
-	mask &= ~port_mask;
+	mask &= (~port_mask | ALE_PORT_HOST);
 
-	/* free if only remaining port is host port */
-	if (mask)
+	if (mask == 0x0 || mask == ALE_PORT_HOST)
+		cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_FREE);
+	else
 		cpsw_ale_set_port_mask(ale_entry, mask,
 				       ale->port_mask_bits);
-	else
-		cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_FREE);
 }
 
 int cpsw_ale_flush_multicast(struct cpsw_ale *ale, int port_mask, int vid)
-- 
2.34.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ