From patchwork Thu Feb 9 13:54:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 726151 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3vK0lD2Q4Xz9s2P for ; Fri, 10 Feb 2017 01:27:04 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=resnulli-us.20150623.gappssmtp.com header.i=@resnulli-us.20150623.gappssmtp.com header.b="Y5Kspfkx"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753219AbdBIO1C (ORCPT ); Thu, 9 Feb 2017 09:27:02 -0500 Received: from mail-wr0-f195.google.com ([209.85.128.195]:33015 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753211AbdBIO1B (ORCPT ); Thu, 9 Feb 2017 09:27:01 -0500 Received: by mail-wr0-f195.google.com with SMTP id i10so12118444wrb.0 for ; Thu, 09 Feb 2017 06:27:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=joxu2R1qsVpKaFCH09LlM4BoRFdZ1Sft3XaZbU8R4ws=; b=Y5KspfkxdYL7l6G4j5gW2UVIFio7btviNAMvXgfKZL7WZ7D/O9pRbjH5h3xDRy4uyr Z4QvX9O0c4le+TjZKNHu7i4NMhC+tcEVY5OQeny87owlEO9/mHP31RUu1BQngGMafxBY qruRoHop6mDZjmdxEIuDzjVnV3fMN5APMCf7vjawKglIHtJDg702DTQ6YGlEYsDUWMtT NG5+D2j6h14LwAtH96ErWMYJMVDk3P7jVs9WUk/KT2z21LYA/phuEhnyXiRouO15f5AF TSKDs3VBO+w6O2pqp+i4VvGS8QM8omCVNdqnr1b0PBtEra9hN6WWoT9x9Tn0A63kdo/D i59g== 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:in-reply-to :references; bh=joxu2R1qsVpKaFCH09LlM4BoRFdZ1Sft3XaZbU8R4ws=; b=RpHYhKSEyomYn4wE95mBK4M5bFo/QVNYS/K5u7F8IwvfIUtGnL/8uB7CZqBWXo5+Rf iiRYY+Rv+Hp6rcs1d6HcH3iPj8F8SxUCiF6V+YHrOVGKcoS9t1vUHRdOd5DbTi/o4KX7 r6Bp8ye4mH3BIAYWXANo5nCmvyrXTrQCd0ETD8zhnqlvc2ocdpqC9//EtYaWO2uM19Zt wAKYDjtpSXAYrVwPqeIgzuiAzQyI1E5qKLVH4t+iUCa3msICTOEyPYvasZrB0usbsiYT 1ABCsiGOY+jA1oj2ytklVhovzhNPdu+KKomfrKpWd2GaMEELLWEeMvrGUlPtL6AYANiP mMcw== X-Gm-Message-State: AMke39n/qPLgd4eB/TdGzHUFecX3ibCcQz6DB0jvOl/FUThGc9iXO3oBlYqU77twLjh6FA== X-Received: by 10.223.160.14 with SMTP id k14mr3365363wrk.69.1486648494725; Thu, 09 Feb 2017 05:54:54 -0800 (PST) Received: from localhost (ip-78-45-162-92.net.upcbroadband.cz. [78.45.162.92]) by smtp.gmail.com with ESMTPSA id u189sm9013049wmu.1.2017.02.09.05.54.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 09 Feb 2017 05:54:54 -0800 (PST) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, ivecera@redhat.com, stephen@networkplumber.org, mlxsw@mellanox.com Subject: [patch net-next 03/10] switchdev: bridge: Offload mc router ports Date: Thu, 9 Feb 2017 14:54:42 +0100 Message-Id: <1486648489-16455-4-git-send-email-jiri@resnulli.us> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1486648489-16455-1-git-send-email-jiri@resnulli.us> References: <1486648489-16455-1-git-send-email-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nogah Frankel Offload the mc router ports list, whenever it is being changed. It is done because in some cases mc packets needs to be flooded to all the ports in this list. Signed-off-by: Nogah Frankel Signed-off-by: Yotam Gigi Signed-off-by: Jiri Pirko Acked-by: Ivan Vecera --- include/net/switchdev.h | 2 ++ net/bridge/br_multicast.c | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/include/net/switchdev.h b/include/net/switchdev.h index 2971c2a..929d6af 100644 --- a/include/net/switchdev.h +++ b/include/net/switchdev.h @@ -46,6 +46,7 @@ enum switchdev_attr_id { SWITCHDEV_ATTR_ID_PORT_PARENT_ID, SWITCHDEV_ATTR_ID_PORT_STP_STATE, SWITCHDEV_ATTR_ID_PORT_BRIDGE_FLAGS, + SWITCHDEV_ATTR_ID_PORT_MROUTER, SWITCHDEV_ATTR_ID_BRIDGE_AGEING_TIME, SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING, SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED, @@ -61,6 +62,7 @@ struct switchdev_attr { struct netdev_phys_item_id ppid; /* PORT_PARENT_ID */ u8 stp_state; /* PORT_STP_STATE */ unsigned long brport_flags; /* PORT_BRIDGE_FLAGS */ + bool mrouter; /* PORT_MROUTER */ clock_t ageing_time; /* BRIDGE_AGEING_TIME */ bool vlan_filtering; /* BRIDGE_VLAN_FILTERING */ bool mc_disabled; /* MC_DISABLED */ diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c index 2add6d4..b760f26 100644 --- a/net/bridge/br_multicast.c +++ b/net/bridge/br_multicast.c @@ -1317,6 +1317,19 @@ br_multicast_update_query_timer(struct net_bridge *br, mod_timer(&query->timer, jiffies + br->multicast_querier_interval); } +static void br_port_mc_router_state_change(struct net_bridge_port *p, + bool is_mc_router) +{ + struct switchdev_attr attr = { + .orig_dev = p->dev, + .id = SWITCHDEV_ATTR_ID_PORT_MROUTER, + .flags = SWITCHDEV_F_DEFER, + .u.mrouter = is_mc_router, + }; + + switchdev_port_attr_set(p->dev, &attr); +} + /* * Add port to router_list * list is maintained ordered by pointer value @@ -1342,6 +1355,7 @@ static void br_multicast_add_router(struct net_bridge *br, else hlist_add_head_rcu(&port->rlist, &br->router_list); br_rtr_notify(br->dev, port, RTM_NEWMDB); + br_port_mc_router_state_change(port, true); } static void br_multicast_mark_router(struct net_bridge *br, @@ -2049,6 +2063,7 @@ static void __del_port_router(struct net_bridge_port *p) return; hlist_del_init_rcu(&p->rlist); br_rtr_notify(p->br->dev, p, RTM_DELMDB); + br_port_mc_router_state_change(p, false); /* don't allow timer refresh */ if (p->multicast_router == MDB_RTR_TYPE_TEMP)