From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4551BC433FF for ; Tue, 30 Jul 2019 11:31:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 008332087F for ; Tue, 30 Jul 2019 11:31:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=cumulusnetworks.com header.i=@cumulusnetworks.com header.b="IG6OHMW5" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730159AbfG3LbO (ORCPT ); Tue, 30 Jul 2019 07:31:14 -0400 Received: from mail-wr1-f67.google.com ([209.85.221.67]:46499 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728412AbfG3LbN (ORCPT ); Tue, 30 Jul 2019 07:31:13 -0400 Received: by mail-wr1-f67.google.com with SMTP id z1so65341013wru.13 for ; Tue, 30 Jul 2019 04:31:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cumulusnetworks.com; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=tUCE/CHU/TFLeJ8RCnUMeDdjaEvSnhdkU6BkkzT8pAM=; b=IG6OHMW5XhjqtC/uFPxBykkCxq2KJntogSkgRduT75mGPI6Sx6/C98OaBe5/Zu7ITW tIkBQT2A+GYbhhzCJSmtws5xDw9CNlekeQ7LrdbK2pLC+p/InKYD8EudpNffMQaMc4Hp uhAs2ocTRAmTiAc4yexJCBd7AlW8uDWwv1SDg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=tUCE/CHU/TFLeJ8RCnUMeDdjaEvSnhdkU6BkkzT8pAM=; b=MNssUkBPcLxu2tBDCtW1lUHEsuS2OPy7H49CmWttxvXLhk0Sss8rX9DiBKN0RuNnO0 ig4yQwrt9OoB9JKc75/xq94Jc5JghKdisZERVKdJu+EN2To0oqHVnvLYMiwEBCERi8Ux cGj0YqzwV1VCLIDN0478FfYb/S9/Owi2i1qldsUls9PSUH6kRU1XBApYYUh5qm39nNjX s9pW1fkn4ec5+wnMkOM/S6hNjdazNs7PJekmTFrB8ZGvWJZeSgFhHBa2dj+LvuAWE7Ot 3KuPZJh+0h0413VzTA5SPdp+OQ8t8XA7QAS6uP5pAlUj325IUc/6/oYe9JIyDZj2pxc9 Txuw== X-Gm-Message-State: APjAAAXS9uDli4X4KGtPv2pg90QSiQxVqJshes51ThQt+sj5jHNjMF/9 Gv9j034covQTv5FQYeb7O6Yfl783ya8= X-Google-Smtp-Source: APXvYqzQ14dBPQwc3xMn/SdPqbDgdTlnJGUs4W2uaCZAdav42Zl22zxjWhoDoSkVcy/oFdqfvLlQVA== X-Received: by 2002:a5d:4e45:: with SMTP id r5mr18745220wrt.206.1564486271341; Tue, 30 Jul 2019 04:31:11 -0700 (PDT) Received: from localhost.localdomain (84-238-136-197.ip.btc-net.bg. [84.238.136.197]) by smtp.gmail.com with ESMTPSA id y10sm53132242wmj.2.2019.07.30.04.31.10 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Tue, 30 Jul 2019 04:31:10 -0700 (PDT) From: Nikolay Aleksandrov To: netdev@vger.kernel.org Cc: davem@davemloft.net, roopa@cumulusnetworks.com, bridge@lists.linux-foundation.org, Nikolay Aleksandrov Subject: [PATCH net] net: bridge: mcast: don't delete permanent entries when fast leave is enabled Date: Tue, 30 Jul 2019 14:21:00 +0300 Message-Id: <20190730112100.18156-1-nikolay@cumulusnetworks.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When permanent entries were introduced by the commit below, they were exempt from timing out and thus igmp leave wouldn't affect them unless fast leave was enabled on the port which was added before permanent entries existed. It shouldn't matter if fast leave is enabled or not if the user added a permanent entry it shouldn't be deleted on igmp leave. Before: $ echo 1 > /sys/class/net/eth4/brport/multicast_fast_leave $ bridge mdb add dev br0 port eth4 grp 229.1.1.1 permanent $ bridge mdb show dev br0 port eth4 grp 229.1.1.1 permanent < join and leave 229.1.1.1 on eth4 > $ bridge mdb show $ After: $ echo 1 > /sys/class/net/eth4/brport/multicast_fast_leave $ bridge mdb add dev br0 port eth4 grp 229.1.1.1 permanent $ bridge mdb show dev br0 port eth4 grp 229.1.1.1 permanent < join and leave 229.1.1.1 on eth4 > $ bridge mdb show dev br0 port eth4 grp 229.1.1.1 permanent Fixes: ccb1c31a7a87 ("bridge: add flags to distinguish permanent mdb entires") Signed-off-by: Nikolay Aleksandrov --- I'll re-work this code in net-next as there's a lot of duplication. net/bridge/br_multicast.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 3d8deac2353d..f8cac3702712 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -1388,6 +1388,9 @@ br_multicast_leave_group(struct net_bridge *br, if (!br_port_group_equal(p, port, src)) continue; + if (p->flags & MDB_PG_FLAGS_PERMANENT) + break; + rcu_assign_pointer(*pp, p->next); hlist_del_init(&p->mglist); del_timer(&p->timer); -- 2.21.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cumulusnetworks.com; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=tUCE/CHU/TFLeJ8RCnUMeDdjaEvSnhdkU6BkkzT8pAM=; b=IG6OHMW5XhjqtC/uFPxBykkCxq2KJntogSkgRduT75mGPI6Sx6/C98OaBe5/Zu7ITW tIkBQT2A+GYbhhzCJSmtws5xDw9CNlekeQ7LrdbK2pLC+p/InKYD8EudpNffMQaMc4Hp uhAs2ocTRAmTiAc4yexJCBd7AlW8uDWwv1SDg= From: Nikolay Aleksandrov Date: Tue, 30 Jul 2019 14:21:00 +0300 Message-Id: <20190730112100.18156-1-nikolay@cumulusnetworks.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Bridge] [PATCH net] net: bridge: mcast: don't delete permanent entries when fast leave is enabled List-Id: Linux Ethernet Bridging List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: netdev@vger.kernel.org Cc: Nikolay Aleksandrov , roopa@cumulusnetworks.com, bridge@lists.linux-foundation.org, davem@davemloft.net When permanent entries were introduced by the commit below, they were exempt from timing out and thus igmp leave wouldn't affect them unless fast leave was enabled on the port which was added before permanent entries existed. It shouldn't matter if fast leave is enabled or not if the user added a permanent entry it shouldn't be deleted on igmp leave. Before: $ echo 1 > /sys/class/net/eth4/brport/multicast_fast_leave $ bridge mdb add dev br0 port eth4 grp 229.1.1.1 permanent $ bridge mdb show dev br0 port eth4 grp 229.1.1.1 permanent < join and leave 229.1.1.1 on eth4 > $ bridge mdb show $ After: $ echo 1 > /sys/class/net/eth4/brport/multicast_fast_leave $ bridge mdb add dev br0 port eth4 grp 229.1.1.1 permanent $ bridge mdb show dev br0 port eth4 grp 229.1.1.1 permanent < join and leave 229.1.1.1 on eth4 > $ bridge mdb show dev br0 port eth4 grp 229.1.1.1 permanent Fixes: ccb1c31a7a87 ("bridge: add flags to distinguish permanent mdb entires") Signed-off-by: Nikolay Aleksandrov --- I'll re-work this code in net-next as there's a lot of duplication. net/bridge/br_multicast.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 3d8deac2353d..f8cac3702712 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -1388,6 +1388,9 @@ br_multicast_leave_group(struct net_bridge *br, if (!br_port_group_equal(p, port, src)) continue; + if (p->flags & MDB_PG_FLAGS_PERMANENT) + break; + rcu_assign_pointer(*pp, p->next); hlist_del_init(&p->mglist); del_timer(&p->timer); -- 2.21.0