From nobody Wed Dec 17 08:59:23 2025 Received: from mx0b-000eb902.pphosted.com (mx0b-000eb902.pphosted.com [205.220.177.212]) (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 92A642066D9; Tue, 18 Mar 2025 22:44:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.212 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742337848; cv=fail; b=WZfeePDbpj/4HxdVHSkf46YD/X9PWTOnWhTBOUaJLMdTqNF2LffUeFTtLWghx1taY2C/1jpK/l+Z8deZFt0PQTtICjJNU+VtyY1ldDaGy2T1thGXyDGgnRjOmH/003rYoiWoRBdLcO/WkP3LGVHwr0siWFyLfocLrOh9XGyMrfk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742337848; c=relaxed/simple; bh=qVvlIy3gt5qIWwbG9pMmu+sJFlbVvjC6QSvPsCRjLo4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Dp02zcgq/spAQovRDqkvf0nujshk3sjPOljEQhaTpSW5lVsENLjz8669ex/B+gcegzAYVFB1Te7Y0E5gkAdqvTaB9W34x1noh0wIUrKSnW47WzJWNiTEDNWEnUvRm3hcM9lSDJRM7cL1UfgvAI3fGjusBpWzZ9o/EZ+kxD/khO8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=garmin.com; spf=pass smtp.mailfrom=garmin.com; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b=Ylzrvv0F; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b=VmcxwjYR; arc=fail smtp.client-ip=205.220.177.212 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=garmin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garmin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b="Ylzrvv0F"; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b="VmcxwjYR" Received: from pps.filterd (m0220298.ppops.net [127.0.0.1]) by mx0a-000eb902.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52IKVt5x031941; Tue, 18 Mar 2025 17:43:38 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garmin.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps1; bh=84w2c TQ7JJPzhD/fMEmhAKKNTDYvSOMiud1QX8A/RLU=; b=Ylzrvv0F0+1JI8M/l7Ocd WnX1AEsjE0G/uXyaX21rZOuObiwzBOBq9aOYTmcfKrHbxYRIKnlyTG9LzE9R/5BX rHrrIAjp4CXic6WqpFHJU2Bvh/IHdmyFUQDTEHm92BAw40HfeWDlPv3/m38jWadI FPu1TFgqvACpJAsoVhRKYDmginmtUBkMdB6Iz6T+5s15FW2nJJtL/t6dVTgHJsCq ib6XBBzVWeZLCWrttU9gf1WAqUNNfcB4rhSE2QfonW/OJPb5NzDkIsEuqvj0q6bf qSI31RHBY9Ynggq6+t0wIz3VdtM4N4Lw+jFtdx49XhPSRp5T72SG3k8RlNQsV2fe Q== Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azlp17010023.outbound.protection.outlook.com [40.93.12.23]) by mx0a-000eb902.pphosted.com (PPS) with ESMTPS id 45ffxt05rr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Mar 2025 17:43:37 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nott43bv/nqX7L611ocg5iASGSgwJR4Rkv39TLXVNWj7LimqbwlZaUn+USeEMfk+1/8O+DEhBxvGv07ANWpBCgi7Kd40SqBO8XNwcS1u7efmO+mox+zusYx1DV1XrNNaEG2NZt+y9rdxddFF9WDZPgDFzeBhpQirRDOJkii2yvX2pJM1EU5nFqe1iS5mUV6wOnN7k8lM3Aiv3xG943Fs8Ob7fXPR0UBFTzP8lhI057NY8uLZDmqogJv02XrMASlZ2zIk+ChmbepBYmL0JTPiP0Rmqle6qdiBodEvLnOr7S0ADnuXyPRvBcITGORW3diwZafgAlPvBYwf4w8aK2igeg== 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=84w2cTQ7JJPzhD/fMEmhAKKNTDYvSOMiud1QX8A/RLU=; b=n6CwOBAt+LTE1eh5Q7sueuSG1hUCYBpBN2ncWbb3iSl/0kpbf24peKf5hxur0rhAt+zCv4okJrCuQSxEU9chviupnOlKCQjApey6EUdzzSQ7cawh/Br4al6wwZuCzwSOpBNqD3lhFAMN/zl+F7MeEHFxMTtB61Hub7H+4HDt/+kxHfzZs+irxm7UzCYQ0CFLfLFrpWzHp7LzmueY5ELiBKamITa4tQpSXM9vpgNvQY6z1buIR16f24lpoU+nnYZ35FDc9yweaWLg1YC9MRwYagUBMWzsC8x32BRdi6PK6ODOubIfe+gvOjASr1PkVTHAtzulPX1Gwu2gtSrJMDDIqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 204.77.163.244) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=garmin.com; dmarc=pass (p=reject sp=quarantine pct=100) action=none header.from=garmin.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garmin.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=84w2cTQ7JJPzhD/fMEmhAKKNTDYvSOMiud1QX8A/RLU=; b=VmcxwjYRLRFDU9FiyJh4+be8RyLDv43IzjZv8/6tBAtsJc0l2fGUREJ/1+i+2IzOm1ZYV1JgfXJL6OT32RCfQs5BOxdlJOSRit4Lvwg6cl7sEBO2QOHMBDhvrJB9MTmSf8607E583FTlejxmXf1PiAJj8w6VC0DrYw2KrHQhkxuO2W+Pz5k6Y3VrUlZqhtKPBcytMWv06Iq0uuak7X0Cg+uilYvpGr/W1XHw9A6D2WMk6PmotxVtAxMkx9diLLx+ZaUrjdhWI12iXwvzqcQNeG4YL+HHVgYwb7c/mE6kpWY4hVt6bf/eiB1o+ZhS0HE+QCg9fdgeftV8YsUMvZMy6w== Received: from PH0PR07CA0066.namprd07.prod.outlook.com (2603:10b6:510:f::11) by DM6PR04MB6891.namprd04.prod.outlook.com (2603:10b6:5:248::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.33; Tue, 18 Mar 2025 22:43:35 +0000 Received: from CO1PEPF000044FD.namprd21.prod.outlook.com (2603:10b6:510:f:cafe::35) by PH0PR07CA0066.outlook.office365.com (2603:10b6:510:f::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8534.33 via Frontend Transport; Tue, 18 Mar 2025 22:43:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 204.77.163.244) smtp.mailfrom=garmin.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=garmin.com; Received-SPF: Pass (protection.outlook.com: domain of garmin.com designates 204.77.163.244 as permitted sender) receiver=protection.outlook.com; client-ip=204.77.163.244; helo=edgetransport.garmin.com; pr=C Received: from edgetransport.garmin.com (204.77.163.244) by CO1PEPF000044FD.mail.protection.outlook.com (10.167.241.203) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8583.3 via Frontend Transport; Tue, 18 Mar 2025 22:43:35 +0000 Received: from KC3WPA-EXMB5.ad.garmin.com (10.65.32.85) by cv1wpa-edge1 (10.60.4.252) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 18 Mar 2025 17:43:27 -0500 Received: from cv1wpa-exmb2.ad.garmin.com (10.5.144.72) by KC3WPA-EXMB5.ad.garmin.com (10.65.32.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.2.1258.32; Tue, 18 Mar 2025 17:43:29 -0500 Received: from cv1wpa-exmb1.ad.garmin.com (10.5.144.71) by CV1WPA-EXMB2.ad.garmin.com (10.5.144.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Tue, 18 Mar 2025 17:43:28 -0500 Received: from CAR-4RCMR33.ad.garmin.com (10.5.209.17) by smtp.garmin.com (10.5.144.71) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Tue, 18 Mar 2025 17:43:28 -0500 From: Joseph Huang To: CC: Joseph Huang , Joseph Huang , Andrew Lunn , "David S. Miller" , Eric Dumazet , "Jakub Kicinski" , Paolo Abeni , Roopa Prabhu , Nikolay Aleksandrov , Simon Horman , , Subject: [Patch net-next 1/3] net: bridge: mcast: Add offload failed mdb flag Date: Tue, 18 Mar 2025 18:42:46 -0400 Message-ID: <20250318224255.143683-2-Joseph.Huang@garmin.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250318224255.143683-1-Joseph.Huang@garmin.com> References: <20250318224255.143683-1-Joseph.Huang@garmin.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: CO1PEPF000044FD:EE_|DM6PR04MB6891:EE_ X-MS-Office365-Filtering-Correlation-Id: 998e4a5d-d6dd-4f59-f1d0-08dd666e5150 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|1800799024|376014|7416014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?RGECi4hyNU/bOpmVsVwB9r3MySpR5Fzwd7YZx+BJwsbKI2wuIZphgrYLqVxa?= =?us-ascii?Q?BNIxAJL9YRD00siDEhcrhmiQcok6uUEiiIiio/PUkIDZgqGTtcFL63tR7jFb?= =?us-ascii?Q?ZzidS9whhAsBvXM7MAF7EaT4C4Yc83EW+bwmxF2ROwlQoM3Vl8jKlxZyrUUl?= =?us-ascii?Q?6WT/I1YkDaXE4Iknc1mG2q1CoOvPy3RjE2TQcMHvZArTvTDIuUy+QkmqXy90?= =?us-ascii?Q?N54qHugUHdoz9w8O36PMVQgfUwtcmN8rZLjjQ0VnwJwuTp/WuWu7Yh5aohKa?= =?us-ascii?Q?NmPRxaW0RYzCz3M6m3VuUI7jhNIVRuNSONmwvR3P6ZRTygg0JjgT6hXOWeuF?= =?us-ascii?Q?UgXcWRZcuzes9RMedg1xyNJxonYozh6umNbUx6AbQW2py9O6SCW0DOeNdSj8?= =?us-ascii?Q?frlRamgoNvmOey7NHVBq3zTqPdii3vEZIBem4CaF8Fyb905Lz8Yo4CHRkzpv?= =?us-ascii?Q?EW6wWPTE4+pqfCFLgFIGB9emhuZcpDP8/YjQ5/JsJh8V33Xv9/APrkFwFr2E?= =?us-ascii?Q?6dbupHp156ZbdRNJ/Z9J3q9+s3TnyItL5IEg6Rco1vGOtnH9/Ofu6XfNmVlv?= =?us-ascii?Q?xEvYCHnTF5b3KYGyDHTiPxunrLbCFYnViU70TJmQEICEATpMtgZSNzmMyCzY?= =?us-ascii?Q?N7RatVs8iQSzpAmiwa3NjZQlTyFxB+joLCQwWXSjfvE42YLhjw461JK2LYMc?= =?us-ascii?Q?BD+i6WmsfxMzU8Dmy8P94bE7y9i5em3BZnw7b53dN3RElzhuaer94XtylAn0?= =?us-ascii?Q?yZ2EnPNqMedraUPsUj2kGB4yRAH8uDfULCDEFmORw5kttwLoqG7fPDsqpfbH?= =?us-ascii?Q?Z1aZI/bgtcyJ0GylSBRLzYLm7A8Lycii57yvzmKS0ZyrIhWywk4gR5JaxDxo?= =?us-ascii?Q?4TDJIpwCjAuMqDCmkM3upkfa4wjOufHAddnRYgSDl+LnV/8pEXhL6mhVnVN+?= =?us-ascii?Q?CzxSBFoTHPyKSOFEfCuhsQHRHde17kHM3vtF14Np+5i16ULsRetSg+MMOYTW?= =?us-ascii?Q?Q9KCl9MSN9ZbcWHse4jI0jIcsCBpcmfDw2Sehzomi0Iply7J9TnOG5LBqre0?= =?us-ascii?Q?QccVfwxzTqVBSfxfdV6B4T5vLI3kzkAc/O2nRSHqgsvgLSTcbUYsVpkvtryx?= =?us-ascii?Q?wK2/0G6uQO3ad88YYG/MgTipp+Yg0Jwy555dCH/SScB/irT2St8s7KuGb8xW?= =?us-ascii?Q?Di28i7TYxegQT0ABBvqf66Tb0KseKVPFj4mxII5kzw8Uxi2t/N+P7In5BGXR?= =?us-ascii?Q?ECRaU/af3YrqdX3jxUFnpnpePhtOu8iYPFoo3fv+susCdpNrMPivDG7lzwa5?= =?us-ascii?Q?Zf1C/38XQVJoPdqo2G9rwqDqpCz68EMCwNpqdSiibM4TbohwxyHqccch0CPi?= =?us-ascii?Q?M/h56u/nI3R8egw2EIsDKxfLwkHVJ0G9MAMQ7riCt2PJ3E94v0tR/K/elu6D?= =?us-ascii?Q?sKV7vH8SO1QiM0mMWYNTIRsiXrtcMfo9/0mmtaswI7TjpSpdro8pgJOtKEC5?= =?us-ascii?Q?qGP7GqoL8u+20RQ=3D?= X-Forefront-Antispam-Report: CIP:204.77.163.244;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:edgetransport.garmin.com;PTR:extedge.garmin.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(1800799024)(376014)(7416014);DIR:OUT;SFP:1102; X-OriginatorOrg: garmin.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2025 22:43:35.1610 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 998e4a5d-d6dd-4f59-f1d0-08dd666e5150 X-MS-Exchange-CrossTenant-Id: 38d0d425-ba52-4c0a-a03e-2a65c8e82e2d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38d0d425-ba52-4c0a-a03e-2a65c8e82e2d;Ip=[204.77.163.244];Helo=[edgetransport.garmin.com] X-MS-Exchange-CrossTenant-AuthSource: CO1PEPF000044FD.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR04MB6891 X-Proofpoint-ORIG-GUID: 60XSZGn1u9sF_NUY6YrtmXOcmt6Ma3Ff X-Proofpoint-GUID: 60XSZGn1u9sF_NUY6YrtmXOcmt6Ma3Ff X-Authority-Analysis: v=2.4 cv=VogjA/2n c=1 sm=1 tr=0 ts=67d9f719 cx=c_pps a=AwHzoy/LmQvuowsjLxKu5A==:117 a=YA0UzX50FYCGjWi3QxTvkg==:17 a=h8e1o3o8w34MuCiiGQrqVE4VwXA=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=Vs1iUdzkB0EA:10 a=qm69fr9Wx_0A:10 a=NbHB2C0EAAAA:8 a=fs3JY7tD4Cos_Bw3ZwUA:9 cc=ntf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-18_10,2025-03-17_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 mlxscore=0 impostorscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 clxscore=1011 bulkscore=0 mlxlogscore=977 priorityscore=1501 adultscore=0 spamscore=0 classifier=spam authscore=0 authtc=n/a authcc=notification route=outbound adjust=0 reason=mlx scancount=1 engine=8.21.0-2502280000 definitions=main-2503180165 Content-Type: text/plain; charset="utf-8" Add MDB_FLAGS_OFFLOAD_FAILED and MDB_PG_FLAGS_OFFLOAD_FAILED to indicate that an attempt to offload the MDB entry to switchdev has failed. Signed-off-by: Joseph Huang --- include/uapi/linux/if_bridge.h | 9 +++++---- net/bridge/br_mdb.c | 2 ++ net/bridge/br_private.h | 11 ++++++----- net/bridge/br_switchdev.c | 10 +++++----- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/include/uapi/linux/if_bridge.h b/include/uapi/linux/if_bridge.h index a5b743a2f775..f2a6de424f3f 100644 --- a/include/uapi/linux/if_bridge.h +++ b/include/uapi/linux/if_bridge.h @@ -699,10 +699,11 @@ struct br_mdb_entry { #define MDB_TEMPORARY 0 #define MDB_PERMANENT 1 __u8 state; -#define MDB_FLAGS_OFFLOAD (1 << 0) -#define MDB_FLAGS_FAST_LEAVE (1 << 1) -#define MDB_FLAGS_STAR_EXCL (1 << 2) -#define MDB_FLAGS_BLOCKED (1 << 3) +#define MDB_FLAGS_OFFLOAD (1 << 0) +#define MDB_FLAGS_FAST_LEAVE (1 << 1) +#define MDB_FLAGS_STAR_EXCL (1 << 2) +#define MDB_FLAGS_BLOCKED (1 << 3) +#define MDB_FLAGS_OFFLOAD_FAILED (1 << 4) __u8 flags; __u16 vid; struct { diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c index 1a52a0bca086..0639691cd19b 100644 --- a/net/bridge/br_mdb.c +++ b/net/bridge/br_mdb.c @@ -144,6 +144,8 @@ static void __mdb_entry_fill_flags(struct br_mdb_entry = *e, unsigned char flags) e->flags |=3D MDB_FLAGS_STAR_EXCL; if (flags & MDB_PG_FLAGS_BLOCKED) e->flags |=3D MDB_FLAGS_BLOCKED; + if (flags & MDB_PG_FLAGS_OFFLOAD_FAILED) + e->flags |=3D MDB_FLAGS_OFFLOAD_FAILED; } =20 static void __mdb_entry_to_br_ip(struct br_mdb_entry *entry, struct br_ip = *ip, diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index 1054b8a88edc..cd6b4e91e7d6 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -306,11 +306,12 @@ struct net_bridge_fdb_flush_desc { u16 vlan_id; }; =20 -#define MDB_PG_FLAGS_PERMANENT BIT(0) -#define MDB_PG_FLAGS_OFFLOAD BIT(1) -#define MDB_PG_FLAGS_FAST_LEAVE BIT(2) -#define MDB_PG_FLAGS_STAR_EXCL BIT(3) -#define MDB_PG_FLAGS_BLOCKED BIT(4) +#define MDB_PG_FLAGS_PERMANENT BIT(0) +#define MDB_PG_FLAGS_OFFLOAD BIT(1) +#define MDB_PG_FLAGS_FAST_LEAVE BIT(2) +#define MDB_PG_FLAGS_STAR_EXCL BIT(3) +#define MDB_PG_FLAGS_BLOCKED BIT(4) +#define MDB_PG_FLAGS_OFFLOAD_FAILED BIT(5) =20 #define PG_SRC_ENT_LIMIT 32 =20 diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c index 7b41ee8740cb..68dccc2ff7b1 100644 --- a/net/bridge/br_switchdev.c +++ b/net/bridge/br_switchdev.c @@ -505,9 +505,6 @@ static void br_switchdev_mdb_complete(struct net_device= *dev, int err, void *pri struct net_bridge_port *port =3D data->port; struct net_bridge *br =3D port->br; =20 - if (err) - goto err; - spin_lock_bh(&br->multicast_lock); mp =3D br_mdb_ip_get(br, &data->ip); if (!mp) @@ -516,11 +513,14 @@ static void br_switchdev_mdb_complete(struct net_devi= ce *dev, int err, void *pri pp =3D &p->next) { if (p->key.port !=3D port) continue; - p->flags |=3D MDB_PG_FLAGS_OFFLOAD; + + if (err) + p->flags |=3D MDB_PG_FLAGS_OFFLOAD_FAILED; + else + p->flags |=3D MDB_PG_FLAGS_OFFLOAD; } out: spin_unlock_bh(&br->multicast_lock); -err: kfree(priv); } =20 --=20 2.49.0 From nobody Wed Dec 17 08:59:23 2025 Received: from mx0b-000eb902.pphosted.com (mx0b-000eb902.pphosted.com [205.220.177.212]) (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 819337E9; Tue, 18 Mar 2025 22:44:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.212 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742337850; cv=fail; b=hDkbUOEjvmuBtQDMo/z2dsgsHR/P5iCxfHyydm/qOtr3XEHJELpjdr5p6QgyGPx64/6fkWZFzTPz0C5kuarwBzooRo+iLRyQS0OQ49XLkZmpc2YL51VkqDyvttLA05tlJL2sVW8vvwXgK5EWDNwNclWtIR1mZCO0PMSO/KH/LsA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742337850; c=relaxed/simple; bh=FV0ggYcvQmupmghgj0ZQ5hk80GfklRnP0Bv3R+iULxE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=IsUZvPrv+D+xrjQ0HUSk63K46ilX3Z0MY4VnATJukrvbsCBlK4FNnvgHnGS89TZvk6vkoVKGu/XZi2UyABYVw++8uy62qqKLf3eKzK5lEX4M1mMGyZ6dlz/ACyzyDoLRppvzRkS3NbMrIkNW34lLn3Nubkvu2g7sYgtfggwbu/E= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=garmin.com; spf=pass smtp.mailfrom=garmin.com; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b=c6hy4+9x; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b=nnwjI264; arc=fail smtp.client-ip=205.220.177.212 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=garmin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garmin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b="c6hy4+9x"; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b="nnwjI264" Received: from pps.filterd (m0220299.ppops.net [127.0.0.1]) by mx0a-000eb902.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52ILqVsx027544; Tue, 18 Mar 2025 17:43:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garmin.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps1; bh=WBwD6 hd47xClh+PmD0jdENGg4VXS44G+LR/HbwfXRMA=; b=c6hy4+9x6PDEgTZbo1lrP lz6hD/aDUpRxgMNeOpwVQh3v338FjjhQBxv4TLdXHqp0+iLsnU/JftmFY8F7cUCD PlEm8Ub8SRy+PqdHCht4Lciv2/K9ZLiUxTElPhZY7oPcBT+yAn+H7lNCEliC8bsp A4Yjl6Z9y9UyTatLP4LM5zUpiCLKZyH9Bs5T8F6OZPBxInuWtfcWu3DLqYc/nBK5 TXEV+p+JTkNCBM6tNQA7grNn5BIZg7etYpI6YFwGkmmx120kltt3Uh5Bk7Y3fs2H FsL6W+7pU3/SxlCE3dFkVl7lvUntyH+byg/ncOwGJ3WWos7MYuXO/wif3ih9xRsD w== Received: from bl2pr02cu003.outbound.protection.outlook.com (mail-eastusazlp17010005.outbound.protection.outlook.com [40.93.11.5]) by mx0a-000eb902.pphosted.com (PPS) with ESMTPS id 45f6whh9xp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Mar 2025 17:43:44 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oNdJhwuRHFJc4Ser/SBudRTCRXMfACMEG4OGq90B7mYGtIn/9VgD93Lq5GR2rnqwVinTIb7v0o7KkjZdQkeTRRKD+T/2RYz1uz86Grk4Mh9Qk2xLbiylOOOPv5jIobnaAaP6dCpKEWf9Jir5n0fE3d9sd+CEf/1TeIEj9Dcz30gsum4mnzqw18W1ke1eTP7wWzPhzSyh+EV2G0YkAXk3hLQYuutxUpTcHhCeAqFedyYzq3Js6BDowSkqVrJ9XfNoEekGeJPaKxmES+lriPLE8vGmAXYYDh77LXITXVmdS0RJxkbnpBxyB1q+etXshTaT/4P74pegGyallfvmm6MTsA== 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=WBwD6hd47xClh+PmD0jdENGg4VXS44G+LR/HbwfXRMA=; b=Jwkp3Q+WR+l4XTKdr/xYw1oW3CgTR/MuowHK4X8kybTCnvcBGncrBiHCdYnhPtnsjXerXSZJY9CwyW1eaY5WNfy0BRLsLYrop32Rj5oDUyszRn1xi+eDQMIj7ws5/QOGXMTTAK0O8/KqcEPwNQmVKuCDhHvrUzoYt9//mDVKz8xWtzJDU1XUjjZw/emNogCoPZug8wQazeC+Xxtscy0pG81ys2PFDTpzHMgdOvFqk13b2Ix5+ZVsobqeo1bZI3hywSHRI0/rzd4a9xp+kGTxOwQ1DgfMJ/4HR47UoJXdvEFHSOBes3PL0VANJY1oQMgqN3Nb4h9IIlx+4TworPQT7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 204.77.163.244) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=garmin.com; dmarc=pass (p=reject sp=quarantine pct=100) action=none header.from=garmin.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garmin.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WBwD6hd47xClh+PmD0jdENGg4VXS44G+LR/HbwfXRMA=; b=nnwjI264M5sL9C6WVCqnQxK6yZo9FastokkbZP5kAzlryHM5H/U0cKZLkaDphhJ88CaQycOgfWIwFfxW7gwmvQ/PUBnpijyxDFTscJNQIXWXT3rgr/vaM4r6dVTTxm7dpLIGE0Mfrrxd/F0udXCJVLSOKS2b3Q+05StV1MM4cJyF1aJpNLKhIOA7YwvizqcxVQ/lPY13ZOr21rko52V3WhMf/ijWB+Yx1Cog/WFyulmk94eeHB406v2p4evX9GLMJuJtEWAYtxsBUyuyrhNNcMVl4OcAJTC8pwis9EG2Qx2vpq3NILOFhpfdBzkkED0++LaocqgaUOu2ba0FFPGxAA== Received: from DM6PR07CA0093.namprd07.prod.outlook.com (2603:10b6:5:337::26) by DM8PR04MB8005.namprd04.prod.outlook.com (2603:10b6:8:f::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.33; Tue, 18 Mar 2025 22:43:42 +0000 Received: from DS1PEPF00017095.namprd03.prod.outlook.com (2603:10b6:5:337:cafe::fa) by DM6PR07CA0093.outlook.office365.com (2603:10b6:5:337::26) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8534.33 via Frontend Transport; Tue, 18 Mar 2025 22:43:42 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 204.77.163.244) smtp.mailfrom=garmin.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=garmin.com; Received-SPF: Pass (protection.outlook.com: domain of garmin.com designates 204.77.163.244 as permitted sender) receiver=protection.outlook.com; client-ip=204.77.163.244; helo=edgetransport.garmin.com; pr=C Received: from edgetransport.garmin.com (204.77.163.244) by DS1PEPF00017095.mail.protection.outlook.com (10.167.17.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.20 via Frontend Transport; Tue, 18 Mar 2025 22:43:42 +0000 Received: from cv1wpa-exmb6.ad.garmin.com (10.5.144.76) by cv1wpa-edge1 (10.60.4.251) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 18 Mar 2025 17:43:29 -0500 Received: from cv1wpa-exmb3.ad.garmin.com (10.5.144.73) by cv1wpa-exmb6.ad.garmin.com (10.5.144.76) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.34; Tue, 18 Mar 2025 17:43:31 -0500 Received: from cv1wpa-exmb1.ad.garmin.com (10.5.144.71) by cv1wpa-exmb3.ad.garmin.com (10.5.144.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Tue, 18 Mar 2025 17:43:30 -0500 Received: from CAR-4RCMR33.ad.garmin.com (10.5.209.17) by smtp.garmin.com (10.5.144.71) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Tue, 18 Mar 2025 17:43:30 -0500 From: Joseph Huang To: CC: Joseph Huang , Joseph Huang , Andrew Lunn , "David S. Miller" , Eric Dumazet , "Jakub Kicinski" , Paolo Abeni , Roopa Prabhu , Nikolay Aleksandrov , Simon Horman , , Subject: [Patch net-next 2/3] net: bridge: mcast: Notify on offload flag change Date: Tue, 18 Mar 2025 18:42:47 -0400 Message-ID: <20250318224255.143683-3-Joseph.Huang@garmin.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250318224255.143683-1-Joseph.Huang@garmin.com> References: <20250318224255.143683-1-Joseph.Huang@garmin.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: DS1PEPF00017095:EE_|DM8PR04MB8005:EE_ X-MS-Office365-Filtering-Correlation-Id: 43c836cd-3101-4dd3-7e68-08dd666e55ca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|36860700013|1800799024|7416014|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?QY19kAmD18J2UtoF0+5z1glj9HkQVugaglj2x1t7iZi/STOQh7Bt4Ef/tQTG?= =?us-ascii?Q?H1KUsSds4wh16ciQ41jbMl46DjSRar5A9hW5MoRTGbzgGtGt7H3NqIIIy26/?= =?us-ascii?Q?ivUAn2aFtmPaT0l3FpVtHbmVC4nGegfPCl++MWW8FboGMsWTp1fwT8X/FXW4?= =?us-ascii?Q?bcATdnC9Ddivwfii4gjWYqN24V1UEJjvVlAtEOSAbSBaPUxCBCsla3YSbOVN?= =?us-ascii?Q?q+wp6XlpH9fqNTqGNrfv/2DpSPx4vAXh+4dVk5yYUtARkGh26Ha9hLLgko/o?= =?us-ascii?Q?965AZDyoBG52D0d9isliPAdohKV8zZYzt/2co6OMNEAM6jV3XRMTsOPvKros?= =?us-ascii?Q?tGJ+xrhxYTMnEh8OLXappm6hiojDuKHqC92a5149sLIh1ygPBbe+L43fRCA7?= =?us-ascii?Q?u3Mu5ULyyfCLwcxkGwkLzKFCqWHopxCsl4hwYXu9c3WUxoWiZXC4sSAB8hjY?= =?us-ascii?Q?KNcbYDMnFqC5J/rweJ1UOhqUiRDsIqCtmzxrSPHaRPyUZhlbMc2fmT3nyPjn?= =?us-ascii?Q?GRYTNIzQLE0ta4qcd4Rvy5l9jeYTzwsIWctro1hGWY4hgxFeOB4c5OccZMtJ?= =?us-ascii?Q?/MxvdTZChjZo4GSatG6RdJsGpbqn1n4+VMWgZ2D9kU9WrEz3mSqXa81kgEXa?= =?us-ascii?Q?aK2ajCbb9Gy8nfTdOvp+SwUWNvGsBm5NguToXOzOvp15mqJJJ4KoI2zE8pvd?= =?us-ascii?Q?JQMOI55u5090439dGx57l4iCUwZkgptbLHl5+vsYevRLT/t6AZ+LRuNODu+6?= =?us-ascii?Q?OwMdr+E5mVNvGkCjn5zDraydP/cypchSQ3P0/3T/dU7OrRWlBVHqTNFAg26Y?= =?us-ascii?Q?4Vt700hqh/JrIBdIg3v0KtA04vlvzoKKMu/22nQmjz8GTb0W8oBNl46L5UxF?= =?us-ascii?Q?ChInPSNaQQUIprqywemgETlWTr+s+rJX9RI0YxUNjRm6fnyL5SzxMRfG1mo7?= =?us-ascii?Q?KfkNNztjn0PLOZ4k5qzVcv5J2wWXrxOzEcluy6Xq/2wrqqTwJvZgUH8NBH3Z?= =?us-ascii?Q?jGjEUUtnfWYAZQwSOh3bPs9EV1dn/J4+7R8O6W8DlGFiAbSyquy2XGFcIO+C?= =?us-ascii?Q?yLNj/Q90GYZe0uFUazmu+/xZB49r4pWry04TsKJr+LBz/aHwvPhJO1G+WZBz?= =?us-ascii?Q?e8JGXvP34m+n/kfMKkfSgamP49SxX1YlhG1Wxo8P+KLNxVNF8bHG23vmOQew?= =?us-ascii?Q?S2IhD7ZYdjTvRW4sjAcqCs1Qsy1eGJxV1KbiM40Xy5B/XMPUwvlfbMGE0YS8?= =?us-ascii?Q?7AgT/Q3p9+MVnHQEUvveNLrqI+L0Oq9JyrYEbaqdtdo8XR5ZA3P3KIL3mof1?= =?us-ascii?Q?Tf+eYoNQngb9oCyq3noTL30DQpI+YRN+G4v/GRtUemXwjrWbDwQPqMJazEij?= =?us-ascii?Q?UE3ETQQKYXWBOY7IO+UmIiSoHhGZYY+ajRdMWabXPV8rjOqm+hGI9HMHYr5u?= =?us-ascii?Q?oLL2b+Dk5a3zG354eWiKi06eJquLq82lfubcb5hyxJKJR9sRSvneuYfIHms0?= =?us-ascii?Q?o6bqX5ZaJyX1MQA=3D?= X-Forefront-Antispam-Report: CIP:204.77.163.244;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:edgetransport.garmin.com;PTR:extedge.garmin.com;CAT:NONE;SFS:(13230040)(82310400026)(36860700013)(1800799024)(7416014)(376014);DIR:OUT;SFP:1102; X-OriginatorOrg: garmin.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2025 22:43:42.7310 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 43c836cd-3101-4dd3-7e68-08dd666e55ca X-MS-Exchange-CrossTenant-Id: 38d0d425-ba52-4c0a-a03e-2a65c8e82e2d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38d0d425-ba52-4c0a-a03e-2a65c8e82e2d;Ip=[204.77.163.244];Helo=[edgetransport.garmin.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017095.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR04MB8005 X-Proofpoint-ORIG-GUID: 9zVcsFn71wb4tvfsLqepICERyHoAYZVV X-Authority-Analysis: v=2.4 cv=b8iy4sGx c=1 sm=1 tr=0 ts=67d9f720 cx=c_pps a=8NhCg2oU0sQOR5chO7ltBw==:117 a=YA0UzX50FYCGjWi3QxTvkg==:17 a=h8e1o3o8w34MuCiiGQrqVE4VwXA=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=Vs1iUdzkB0EA:10 a=qm69fr9Wx_0A:10 a=NbHB2C0EAAAA:8 a=VGaYpauLdRoLlJ9qq5IA:9 cc=ntf X-Proofpoint-GUID: 9zVcsFn71wb4tvfsLqepICERyHoAYZVV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-18_10,2025-03-17_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 priorityscore=1501 mlxscore=0 bulkscore=0 spamscore=0 adultscore=0 clxscore=1015 lowpriorityscore=0 classifier=spam authscore=0 authtc=n/a authcc=notification route=outbound adjust=0 reason=mlx scancount=1 engine=8.21.0-2502280000 definitions=main-2503180165 Content-Type: text/plain; charset="utf-8" Notify user space on offload flag(s) change. This behavior is controlled by the new knob mdb_notify_on_flag_change: 0 - the bridge will not notify user space about MDB flag change 1 - the bridge will notify user space about flag change if either MDB_PG_FLAGS_OFFLOAD or MDB_PG_FLAGS_OFFLOAD_FAILED has changed 2 - the bridge will notify user space about flag change only if MDB_PG_FLAGS_OFFLOAD_FAILED has changed The default value is 0. Signed-off-by: Joseph Huang --- net/bridge/br_mdb.c | 28 +++++++++++++++++++++++----- net/bridge/br_multicast.c | 25 +++++++++++++++++++++++++ net/bridge/br_private.h | 15 +++++++++++++++ net/bridge/br_switchdev.c | 25 +++++++++++++++++++++++-- 4 files changed, 86 insertions(+), 7 deletions(-) diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c index 0639691cd19b..d206b5a160f3 100644 --- a/net/bridge/br_mdb.c +++ b/net/bridge/br_mdb.c @@ -519,16 +519,17 @@ static size_t rtnl_mdb_nlmsg_size(const struct net_br= idge_port_group *pg) rtnl_mdb_nlmsg_pg_size(pg); } =20 -void br_mdb_notify(struct net_device *dev, - struct net_bridge_mdb_entry *mp, - struct net_bridge_port_group *pg, - int type) +static void _br_mdb_notify(struct net_device *dev, + struct net_bridge_mdb_entry *mp, + struct net_bridge_port_group *pg, + int type, bool notify_switchdev) { struct net *net =3D dev_net(dev); struct sk_buff *skb; int err =3D -ENOBUFS; =20 - br_switchdev_mdb_notify(dev, mp, pg, type); + if (notify_switchdev) + br_switchdev_mdb_notify(dev, mp, pg, type); =20 skb =3D nlmsg_new(rtnl_mdb_nlmsg_size(pg), GFP_ATOMIC); if (!skb) @@ -546,6 +547,23 @@ void br_mdb_notify(struct net_device *dev, rtnl_set_sk_err(net, RTNLGRP_MDB, err); } =20 +void br_mdb_notify(struct net_device *dev, + struct net_bridge_mdb_entry *mp, + struct net_bridge_port_group *pg, + int type) +{ + _br_mdb_notify(dev, mp, pg, type, true); +} + +#ifdef CONFIG_NET_SWITCHDEV +void br_mdb_flag_change_notify(struct net_device *dev, + struct net_bridge_mdb_entry *mp, + struct net_bridge_port_group *pg) +{ + _br_mdb_notify(dev, mp, pg, RTM_NEWMDB, false); +} +#endif + static int nlmsg_populate_rtr_fill(struct sk_buff *skb, struct net_device *dev, int ifindex, u16 vid, u32 pid, diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index b2ae0d2434d2..8d583caecd40 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -4051,6 +4051,10 @@ void br_multicast_ctx_init(struct net_bridge *br, brmctx->ip6_querier.port_ifidx =3D 0; seqcount_spinlock_init(&brmctx->ip6_querier.seq, &br->multicast_lock); #endif +#ifdef CONFIG_NET_SWITCHDEV + brmctx->multicast_mdb_notify_on_flag_change =3D + MDB_NOTIFY_ON_FLAG_CHANGE_DISABLE; +#endif =20 timer_setup(&brmctx->ip4_mc_router_timer, br_ip4_multicast_local_router_expired, 0); @@ -4708,6 +4712,27 @@ int br_multicast_set_mld_version(struct net_bridge_m= cast *brmctx, } #endif =20 +#ifdef CONFIG_NET_SWITCHDEV +int br_multicast_set_mdb_notify_on_flag_change(struct net_bridge_mcast *br= mctx, + u8 val) +{ + switch (val) { + case MDB_NOTIFY_ON_FLAG_CHANGE_DISABLE: + case MDB_NOTIFY_ON_FLAG_CHANGE_BOTH: + case MDB_NOTIFY_ON_FLAG_CHANGE_FAIL_ONLY: + break; + default: + return -EINVAL; + } + + spin_lock_bh(&brmctx->br->multicast_lock); + brmctx->multicast_mdb_notify_on_flag_change =3D val; + spin_unlock_bh(&brmctx->br->multicast_lock); + + return 0; +} +#endif + void br_multicast_set_query_intvl(struct net_bridge_mcast *brmctx, unsigned long val) { diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index cd6b4e91e7d6..8e8de5d54ae3 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -132,6 +132,10 @@ struct net_bridge_mcast_port { #endif /* CONFIG_BRIDGE_IGMP_SNOOPING */ }; =20 +#define MDB_NOTIFY_ON_FLAG_CHANGE_DISABLE 0 +#define MDB_NOTIFY_ON_FLAG_CHANGE_BOTH 1 +#define MDB_NOTIFY_ON_FLAG_CHANGE_FAIL_ONLY 2 + /* net_bridge_mcast must be always defined due to forwarding stubs */ struct net_bridge_mcast { #ifdef CONFIG_BRIDGE_IGMP_SNOOPING @@ -146,6 +150,9 @@ struct net_bridge_mcast { u8 multicast_router; #if IS_ENABLED(CONFIG_IPV6) u8 multicast_mld_version; +#endif +#ifdef CONFIG_NET_SWITCHDEV + u8 multicast_mdb_notify_on_flag_change; #endif unsigned long multicast_last_member_interval; unsigned long multicast_membership_interval; @@ -988,6 +995,10 @@ int br_multicast_set_igmp_version(struct net_bridge_mc= ast *brmctx, int br_multicast_set_mld_version(struct net_bridge_mcast *brmctx, unsigned long val); #endif +#ifdef CONFIG_NET_SWITCHDEV +int br_multicast_set_mdb_notify_on_flag_change(struct net_bridge_mcast *br= mctx, + u8 val); +#endif struct net_bridge_mdb_entry * br_mdb_ip_get(struct net_bridge *br, struct br_ip *dst); struct net_bridge_mdb_entry * @@ -1004,6 +1015,10 @@ int br_mdb_hash_init(struct net_bridge *br); void br_mdb_hash_fini(struct net_bridge *br); void br_mdb_notify(struct net_device *dev, struct net_bridge_mdb_entry *mp, struct net_bridge_port_group *pg, int type); +#ifdef CONFIG_NET_SWITCHDEV +void br_mdb_flag_change_notify(struct net_device *dev, struct net_bridge_m= db_entry *mp, + struct net_bridge_port_group *pg); +#endif void br_rtr_notify(struct net_device *dev, struct net_bridge_mcast_port *p= mctx, int type); void br_multicast_del_pg(struct net_bridge_mdb_entry *mp, diff --git a/net/bridge/br_switchdev.c b/net/bridge/br_switchdev.c index 68dccc2ff7b1..5b09cfcdf3f3 100644 --- a/net/bridge/br_switchdev.c +++ b/net/bridge/br_switchdev.c @@ -504,20 +504,41 @@ static void br_switchdev_mdb_complete(struct net_devi= ce *dev, int err, void *pri struct net_bridge_mdb_entry *mp; struct net_bridge_port *port =3D data->port; struct net_bridge *br =3D port->br; + bool offload_changed =3D false; + bool failed_changed =3D false; + u8 notify; =20 spin_lock_bh(&br->multicast_lock); mp =3D br_mdb_ip_get(br, &data->ip); if (!mp) goto out; + + notify =3D br->multicast_ctx.multicast_mdb_notify_on_flag_change; + for (pp =3D &mp->ports; (p =3D mlock_dereference(*pp, br)) !=3D NULL; pp =3D &p->next) { if (p->key.port !=3D port) continue; =20 - if (err) + if (err) { + if (!(p->flags & MDB_PG_FLAGS_OFFLOAD_FAILED)) + failed_changed =3D true; p->flags |=3D MDB_PG_FLAGS_OFFLOAD_FAILED; - else + } else { + if (!(p->flags & MDB_PG_FLAGS_OFFLOAD)) + offload_changed =3D true; p->flags |=3D MDB_PG_FLAGS_OFFLOAD; + } + + if (notify =3D=3D MDB_NOTIFY_ON_FLAG_CHANGE_DISABLE || + (!offload_changed && !failed_changed)) + continue; + + if (notify =3D=3D MDB_NOTIFY_ON_FLAG_CHANGE_FAIL_ONLY && + !failed_changed) + continue; + + br_mdb_flag_change_notify(br->dev, mp, p); } out: spin_unlock_bh(&br->multicast_lock); --=20 2.49.0 From nobody Wed Dec 17 08:59:23 2025 Received: from mx0b-000eb902.pphosted.com (mx0b-000eb902.pphosted.com [205.220.177.212]) (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 A2A26207A32; Tue, 18 Mar 2025 22:44:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.177.212 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742337849; cv=fail; b=hftAQUZyDBfqpdom9FvjuwPIIjyZmndFZMed+igQv5/FlFizyWP7JyDxpGEXDS1LpV/WbB0R3gWJ/2QVAUmQZvV1DzLfVJ0LTkOml1xHPfbHMknuaaDwcR0jby1qIyN7twB/6wBaatZya8oRrnQTNvYA/UyWjPHnTH0CN7TpOr4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742337849; c=relaxed/simple; bh=f+7JNQVv3P3ycP7qGQ1oUYdZZS2H/MtraaurVTKikBk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=gEzSLAm2mCoJxE86Np9ufuJVukTiskBHa6IeuJvwFfQ8nTEcW6mwrZs11X8LGhoNUlV9DLYwb13imH0gOPDzANDsnTqZ6hhWo+KatbWW3SqXTFRgxCSeWRBnhetzUbi+t+jufd72y++v2V42Uqm4Na/kSVZVOpdiCvwbO4qJnJg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=garmin.com; spf=pass smtp.mailfrom=garmin.com; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b=HwcQW8yh; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b=N9qk8HnT; arc=fail smtp.client-ip=205.220.177.212 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=garmin.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garmin.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b="HwcQW8yh"; dkim=pass (2048-bit key) header.d=garmin.com header.i=@garmin.com header.b="N9qk8HnT" Received: from pps.filterd (m0220299.ppops.net [127.0.0.1]) by mx0a-000eb902.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52IJobR7024638; Tue, 18 Mar 2025 17:43:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garmin.com; h=cc :content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=pps1; bh=q7HSC yBqR/yXnB/GIwPyI6DWbOnHASxEFm90MjsXb24=; b=HwcQW8yhV6SqDRkdRIVRx o/khO3k1CRUlf9dG1vD0v5AAjVzuY5PGOzCkPjR/e0m0rbADEMMlFGzGmGdZDUDu 5tNT6PZKNiEDdzAa3kOwt547uaWRZY7QWu1Xx0HijHSnH4ICVEQvycbcejfA7giT 4homPEZcJ/wT0J06+JPH8qRenCye/aTHFtDHWixXnsO1xe3sl03zIe/RbxxC2YGE lBF7hQwKbzgBWgDCI73D0QOdJhBBBAut32E07MTADoSnqAoA/TChrNOIWayvSRlL gItzv7wAwZYZWxa0aZUmmkt+KWWF5ySQcSVRURrBM2NIBVktDFAPT+ZaBgmpzM0B w== Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2046.outbound.protection.outlook.com [104.47.55.46]) by mx0a-000eb902.pphosted.com (PPS) with ESMTPS id 45f6whh9xr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Mar 2025 17:43:45 -0500 (CDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ei8cKK0PBU8HooyIVlsQvPqCrObg7lAKfv7+bO7ccVg9Aqgaq+sSZmrTD1CfP91ive2rbLcROXkiDtQ1BDNuJfx5ykrPUrsRhwOi5GmG3ICT6SfVFIfvjRQkgYvF4XCbPvM4meubvuPTUH3Z1mjnmZ6kapHTBMmg8gddv4s5TXwMUhHpjxm7gIxv4qhVyLwbiTT/0c6od0D2P8gN4lDO/+Pqxf68SIn92BGp0WPiMPSN8aHqJ2isBEPmvSKDx1jwAU7dr4IQUpS0gfnrb9WmWS77oiSdmKsdBNxeAPB8qx/UGaJPZMC7sulbZrC3x8NWqtttcQeHnHoZXlUzO1387A== 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=q7HSCyBqR/yXnB/GIwPyI6DWbOnHASxEFm90MjsXb24=; b=GlJywFk8xO02l8I0HRtl28lJBBfpGHN1iAYmJLV6/MoE8ohF2gc5LDXy68cji2CcHWixqX1tS0LaKIVPGuHLxfJu335E1O3fDcMMpIPflVmC7FQpwO6yh6aXkrZ/IzXG6VKquyLhNYa4o51bvIlGid7cloPpKJHoU0O7w1gU5XkIDmiManIma9hzfXQ1JV6ekQ86AvxhFMpwKHrTBSjT2X7ndg42MK/GGWXNeQ7IsJdyuxbn90Tbp3KkulRFWfqqElt9XWZ30/fAHXzhgIuJuV3qcRBdG4nz544M2FFhLWgUM4zyQH+c+F5emVzylDQtylr3t2iMLKcVqlzulKgL0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 204.77.163.244) smtp.rcpttodomain=vger.kernel.org smtp.mailfrom=garmin.com; dmarc=pass (p=reject sp=quarantine pct=100) action=none header.from=garmin.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garmin.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=q7HSCyBqR/yXnB/GIwPyI6DWbOnHASxEFm90MjsXb24=; b=N9qk8HnTkXsZ/lJpR+mOl8bGINu9DZB9EJO6mdNBC9IPALMvHbS/y9VN0nxCtbuX1Pq4MoMNh49lqt1pjIg+IyGLifw1nlskSUS9cUvwg4zcXF4vZUMEc/fmWWf6mHwEK5eFKtyzA3t0LF8FNlq2Bz7cxRqL9kUErz1VVeww3g0MAZue73TEcc35kXdYCZogGDa0QK07duHBuksDFQoLgL+LxWTDOUXocD/xer82WyJcE3Pq5ZveBvRhPA8nHXoOsd24nP8lQQrRMKescAPvdbSwmllmXpUTKCvtnLo0G0GhIIUAQwj0MBKDLEMEI+LL/ERwgZvaTLKu2yQtMcMxoQ== Received: from DM6PR07CA0082.namprd07.prod.outlook.com (2603:10b6:5:337::15) by DM6PR04MB6591.namprd04.prod.outlook.com (2603:10b6:5:20e::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.33; Tue, 18 Mar 2025 22:43:43 +0000 Received: from DS1PEPF00017095.namprd03.prod.outlook.com (2603:10b6:5:337:cafe::7c) by DM6PR07CA0082.outlook.office365.com (2603:10b6:5:337::15) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8534.34 via Frontend Transport; Tue, 18 Mar 2025 22:43:43 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 204.77.163.244) smtp.mailfrom=garmin.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=garmin.com; Received-SPF: Pass (protection.outlook.com: domain of garmin.com designates 204.77.163.244 as permitted sender) receiver=protection.outlook.com; client-ip=204.77.163.244; helo=edgetransport.garmin.com; pr=C Received: from edgetransport.garmin.com (204.77.163.244) by DS1PEPF00017095.mail.protection.outlook.com (10.167.17.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.20 via Frontend Transport; Tue, 18 Mar 2025 22:43:43 +0000 Received: from cv1wpa-exmb6.ad.garmin.com (10.5.144.76) by cv1wpa-edge1 (10.60.4.251) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Tue, 18 Mar 2025 17:43:32 -0500 Received: from cv1wpa-exmb3.ad.garmin.com (10.5.144.73) by cv1wpa-exmb6.ad.garmin.com (10.5.144.76) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.34; Tue, 18 Mar 2025 17:43:34 -0500 Received: from cv1wpa-exmb1.ad.garmin.com (10.5.144.71) by cv1wpa-exmb3.ad.garmin.com (10.5.144.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Tue, 18 Mar 2025 17:43:33 -0500 Received: from CAR-4RCMR33.ad.garmin.com (10.5.209.17) by smtp.garmin.com (10.5.144.71) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Tue, 18 Mar 2025 17:43:32 -0500 From: Joseph Huang To: CC: Joseph Huang , Joseph Huang , Andrew Lunn , "David S. Miller" , Eric Dumazet , "Jakub Kicinski" , Paolo Abeni , Roopa Prabhu , Nikolay Aleksandrov , Simon Horman , , Subject: [Patch net-next 3/3] net: bridge: Add notify on flag change netlink i/f Date: Tue, 18 Mar 2025 18:42:48 -0400 Message-ID: <20250318224255.143683-4-Joseph.Huang@garmin.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250318224255.143683-1-Joseph.Huang@garmin.com> References: <20250318224255.143683-1-Joseph.Huang@garmin.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: DS1PEPF00017095:EE_|DM6PR04MB6591:EE_ X-MS-Office365-Filtering-Correlation-Id: 0fd53f19-df5e-4191-9e9c-08dd666e566c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?HTp3QvP03eQWdtD8dVY86lsoYUt3teMRzOuBZ4VwbudzNZ2KTn2qYq+aNQ7Q?= =?us-ascii?Q?73iye2T2YxJEbhAhn+QPXr9hwiX/ujoqOmLMXjtHpfkl+SgByyjS7ZL/xASx?= =?us-ascii?Q?U4U1bdyRdXsHJ91s6VdLM+h3mFnUbNV5YJsBxO5oD0Eku6i4XvsExkxkMDTD?= =?us-ascii?Q?XJ1ODhzu28ZIzFF/ubgSPuWW/h4NkwhAcix3H+E4nsE3bttDVOB4VVsOMkiG?= =?us-ascii?Q?Rygl5+zoiw3HOan2CLGDneu0DLyXmMi3T9tNh5jdyrcRKcLbv5S1kxkiw5SI?= =?us-ascii?Q?yGnVyOH+N2v7Pyu9LdZNpUTyKIhzQoFzCdJwVfl7lwm8vo8qhjQQaEC3tBwE?= =?us-ascii?Q?1EYBg2U3cqk45mYlN2P36EJMcI+zmmfj1P5nw8W+AWvVvXYSeSSWLpomUpqp?= =?us-ascii?Q?YTLfsexxCYus2MC705XSzDkfrAc1BA2jgk5VDl2DS0m8rcSITOxuoirKYorf?= =?us-ascii?Q?E+dGfvM+ZbMrq49JaUcwVrKVPfCj7hFvloSsg2uTmlwTfelbUbRttk+QESY2?= =?us-ascii?Q?ZiikQyoiLXrDen3mBpcAkb4qClC84tKFpg9JCATadIZNiMQ1utDhEEiHrFir?= =?us-ascii?Q?6xzEFNraS7me8FECqcBKunPm5m33+kofOBjy4AEABgAinI8gO9nzTQ/TrPMa?= =?us-ascii?Q?fOvbUjrn7Hx4EeiFDuyR++8ZFyRsvKbQ5S5NQinIYEIUXwMPiVVOILoqSBGD?= =?us-ascii?Q?KgSnZ5hhWrkkOnIbot1nGVAuh9jAcZSIBIBKMuieL36qDeobs39nTJbzkjAs?= =?us-ascii?Q?usOkjENCaDxIdTchbLdKQ8PRk4n6uw6RizWuXqJ9xhyv8ZtvLjhNAtuVeQgq?= =?us-ascii?Q?eAI7k2+0SX/fVmfmr1lGlX5hDlNTCYTON+fJOeXOj4m+Tfc3s0Hp+qUgzDVJ?= =?us-ascii?Q?hBgYL/qn7UXTWXcvOfziNKNdpbgy0YPPaCVAB52/04Mv5G4h1g4W9AnjTZ4k?= =?us-ascii?Q?HZTwQb6+dKIjeIYUa2wHBJb03qZanV/jhHFq4WE+KuCcs014KCHCSGQ8aEkr?= =?us-ascii?Q?jHnih6IIQ4Cnun0dnWran2sQG+6rHrYOmb1qk3DPK0s+LRyqmLi0Ho0XjwXu?= =?us-ascii?Q?wTOfdlmdu1R3CH8wHMdeO0VuJmj057nZJ3iDN7AT0dLXfqE8eu9KKd95G/MF?= =?us-ascii?Q?ZXx8iezpYKzflb1oWbAXNQczPzbZhhzpPtH5uAjCFJu/VmJBFC4RG/BTb1n1?= =?us-ascii?Q?M6G9ln+FZjlLgNeFeqo0QYlICh90lTqzqCZpR3qDx495XRELw+X9RzRvA1Jv?= =?us-ascii?Q?Ep+jvL+fj63yyEBd0eYjoXwVgqV6zIVHpKVq3fWXUGt8ygtklpRQ3LsR02Eb?= =?us-ascii?Q?ufWz7E1THqVNb9A8d37ri8wkDuI6+QfYOP0rz3Og71lO6nwtnkHIcjSQ29fu?= =?us-ascii?Q?0+X4XvJp8hYLaNOlL9PTlcIORu3WlnW242H+3kGxEWtvH5FiLxdOQiudsSvl?= =?us-ascii?Q?Ns4VxkgAJ2ESMTEiR4sjgD8KBkuQ4uBKXEux+2eCLaarfBYbTUE+dUAla2zO?= =?us-ascii?Q?lC9HiEX4x5dePYg=3D?= X-Forefront-Antispam-Report: CIP:204.77.163.244;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:edgetransport.garmin.com;PTR:extedge.garmin.com;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1102; X-OriginatorOrg: garmin.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Mar 2025 22:43:43.7935 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0fd53f19-df5e-4191-9e9c-08dd666e566c X-MS-Exchange-CrossTenant-Id: 38d0d425-ba52-4c0a-a03e-2a65c8e82e2d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=38d0d425-ba52-4c0a-a03e-2a65c8e82e2d;Ip=[204.77.163.244];Helo=[edgetransport.garmin.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017095.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR04MB6591 X-Proofpoint-ORIG-GUID: BGhGmFL1_I7B0SFR6EqIVOpOpdsrSVhQ X-Authority-Analysis: v=2.4 cv=b8iy4sGx c=1 sm=1 tr=0 ts=67d9f722 cx=c_pps a=OGaRt8TyNAR4X2Yz4FfAAw==:117 a=YA0UzX50FYCGjWi3QxTvkg==:17 a=h8e1o3o8w34MuCiiGQrqVE4VwXA=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=Vs1iUdzkB0EA:10 a=qm69fr9Wx_0A:10 a=NbHB2C0EAAAA:8 a=IcH8VMcKkPr75ZKuGPwA:9 cc=ntf X-Proofpoint-GUID: BGhGmFL1_I7B0SFR6EqIVOpOpdsrSVhQ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-18_10,2025-03-17_03,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 priorityscore=1501 mlxscore=0 bulkscore=0 spamscore=0 adultscore=0 clxscore=1015 lowpriorityscore=0 classifier=spam authscore=0 authtc=n/a authcc=notification route=outbound adjust=0 reason=mlx scancount=1 engine=8.21.0-2502280000 definitions=main-2503180165 Content-Type: text/plain; charset="utf-8" Add netlink interface to manipulate the mdb_notify_on_flag_change knob. Signed-off-by: Joseph Huang --- include/uapi/linux/if_link.h | 14 ++++++++++++++ net/bridge/br_netlink.c | 21 +++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h index bfe880fbbb24..8fa830599972 100644 --- a/include/uapi/linux/if_link.h +++ b/include/uapi/linux/if_link.h @@ -741,6 +741,19 @@ enum in6_addr_gen_mode { * @IFLA_BR_FDB_MAX_LEARNED * Set the number of max dynamically learned FDB entries for the current * bridge. + * + * @IFLA_BR_MDB_NOTIFY_ON_FLAG_CHANGE + * Set how the bridge shall notify user space about MDB flag change via + * RTM_NEWMDB netlink message. + * The valid values are: + * + * * 0 - the bridge will not notify user space about MDB flag change + * * 1 - the bridge will notify user space about flag change if either + * MDB_PG_FLAGS_OFFLOAD or MDB_PG_FLAGS_OFFLOAD_FAILED has chang= ed + * * 2 - the bridge will notify user space about flag change only if + * MDB_PG_FLAGS_OFFLOAD_FAILED has changed + * + * The default value is 0. */ enum { IFLA_BR_UNSPEC, @@ -793,6 +806,7 @@ enum { IFLA_BR_MCAST_QUERIER_STATE, IFLA_BR_FDB_N_LEARNED, IFLA_BR_FDB_MAX_LEARNED, + IFLA_BR_MDB_NOTIFY_ON_FLAG_CHANGE, __IFLA_BR_MAX, }; =20 diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c index 3e0f47203f2a..e87d39b148d8 100644 --- a/net/bridge/br_netlink.c +++ b/net/bridge/br_netlink.c @@ -1270,6 +1270,7 @@ static const struct nla_policy br_policy[IFLA_BR_MAX = + 1] =3D { NLA_POLICY_EXACT_LEN(sizeof(struct br_boolopt_multi)), [IFLA_BR_FDB_N_LEARNED] =3D { .type =3D NLA_REJECT }, [IFLA_BR_FDB_MAX_LEARNED] =3D { .type =3D NLA_U32 }, + [IFLA_BR_MDB_NOTIFY_ON_FLAG_CHANGE] =3D { .type =3D NLA_U8 }, }; =20 static int br_changelink(struct net_device *brdev, struct nlattr *tb[], @@ -1514,6 +1515,18 @@ static int br_changelink(struct net_device *brdev, s= truct nlattr *tb[], return err; } #endif + +#ifdef CONFIG_NET_SWITCHDEV + if (data[IFLA_BR_MDB_NOTIFY_ON_FLAG_CHANGE]) { + __u8 val; + + val =3D nla_get_u8(data[IFLA_BR_MDB_NOTIFY_ON_FLAG_CHANGE]); + err =3D br_multicast_set_mdb_notify_on_flag_change(&br->multicast_ctx, + val); + if (err) + return err; + } +#endif #endif #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER) if (data[IFLA_BR_NF_CALL_IPTABLES]) { @@ -1625,6 +1638,9 @@ static size_t br_get_size(const struct net_device *br= dev) nla_total_size(sizeof(u8)) + /* IFLA_BR_MCAST_IGMP_VERSION */ nla_total_size(sizeof(u8)) + /* IFLA_BR_MCAST_MLD_VERSION */ br_multicast_querier_state_size() + /* IFLA_BR_MCAST_QUERIER_STATE= */ +#ifdef CONFIG_NET_SWITCHDEV + nla_total_size(sizeof(u8)) + /* IFLA_BR_MDB_NOTIFY_ON_FLAG_CHANGE = */ +#endif #endif #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER) nla_total_size(sizeof(u8)) + /* IFLA_BR_NF_CALL_IPTABLES */ @@ -1722,6 +1738,11 @@ static int br_fill_info(struct sk_buff *skb, const s= truct net_device *brdev) if (nla_put_u8(skb, IFLA_BR_MCAST_MLD_VERSION, br->multicast_ctx.multicast_mld_version)) return -EMSGSIZE; +#endif +#ifdef CONFIG_NET_SWITCHDEV + if (nla_put_u8(skb, IFLA_BR_MDB_NOTIFY_ON_FLAG_CHANGE, + br->multicast_ctx.multicast_mdb_notify_on_flag_change)) + return -EMSGSIZE; #endif clockval =3D jiffies_to_clock_t(br->multicast_ctx.multicast_last_member_i= nterval); if (nla_put_u64_64bit(skb, IFLA_BR_MCAST_LAST_MEMBER_INTVL, clockval, --=20 2.49.0