From patchwork Thu Feb 9 13:54:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 726121 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 3vK0G65dR0z9s6s for ; Fri, 10 Feb 2017 01:05:18 +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="ehFU+vXP"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752030AbdBIOFQ (ORCPT ); Thu, 9 Feb 2017 09:05:16 -0500 Received: from mail-wr0-f194.google.com ([209.85.128.194]:36106 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751714AbdBIOFN (ORCPT ); Thu, 9 Feb 2017 09:05:13 -0500 Received: by mail-wr0-f194.google.com with SMTP id k90so12004740wrc.3 for ; Thu, 09 Feb 2017 06:04:23 -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=/FIFG2BgLEIFl3iM5KzjNeLcQ3mgdMZSmFUeUhjJ7uI=; b=ehFU+vXP3xGuu1MIPvntpOeJPZNnHs96zNucS57c8hHqxJn1cGAONCx1/5zgwXyUdV XSPuku07CRYFdHyw8vu0c5XuQQ0zw0Uao+O8Q5wVkgeIZQPtN88OIcGn328j1+SITv1Y nPwyChkBkHQR4duC3YWVFUtzQJJNXPMmw1XKbek9UaQ3MfN2NLVcZoaWzXxFKErSBrcA 31pkhmqRia8i+2mS3qLfGTskBHu2gIKvbh31h76ZCKk3Q3Q3cLzpawUHP1WcxwzhRHqq i5kzOiFHw+0wPqoicNLuH3bbWP8N4P/aR33dNjvl90tiA9dLxqvXwPfiroV8Otju5itg uqPw== 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=/FIFG2BgLEIFl3iM5KzjNeLcQ3mgdMZSmFUeUhjJ7uI=; b=m9TqjxoQgH1HlfS4v1t6ib0koDXOWljB8c8RwznDPtlOHv7m6L6/tgT1bzWCVHZVQA 9iS/QB8OYgCu8G3VWfIDpV4GPii/KRLfPRFZ8da3EdlZq8ELmqumiamV/zA0yG03TxAl eOzKqt3+ahb6XZS786eyc4adACcjCD3wLDQ7iO0D8RFWGcxmB8UA/T7ztQBi14owAUQq Bq6D3I/aCDh9KuD5TBeJkntk4PA14DQluH6ijj4gN2AXjiBrSfkaYM9wpc4ZtVEM2wy7 SmZjBJw1OjOscAGgnpHCaveFNVZRkxEWHJXhUzhpcmYesWDd2CSk2FPDKddXk/l1c6B/ r4TA== X-Gm-Message-State: AMke39nYg3BGYwl4zoNXbhsZLonu+9DqyLR8bZZDVTfHy7onz+8Ur9I4AIluhgELhgceXg== X-Received: by 10.223.155.197 with SMTP id e5mr2917450wrc.133.1486648502543; Thu, 09 Feb 2017 05:55:02 -0800 (PST) Received: from localhost (ip-78-45-162-92.net.upcbroadband.cz. [78.45.162.92]) by smtp.gmail.com with ESMTPSA id i73sm9026727wmd.11.2017.02.09.05.55.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 09 Feb 2017 05:55:02 -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 10/10] mlxsw: spectrum: Update mc_disabled flag by switchdev attr Date: Thu, 9 Feb 2017 14:54:49 +0100 Message-Id: <1486648489-16455-11-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 Add a function to update mc_disabled from switchdev attr SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED Signed-off-by: Nogah Frankel Signed-off-by: Yotam Gigi Signed-off-by: Jiri Pirko --- .../ethernet/mellanox/mlxsw/spectrum_switchdev.c | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c index 9540f20..598727d 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c @@ -274,6 +274,30 @@ static int mlxsw_sp_port_flood_table_set(struct mlxsw_sp_port *mlxsw_sp_port, return err; } +static int mlxsw_sp_port_mc_disabled_set(struct mlxsw_sp_port *mlxsw_sp_port, + struct switchdev_trans *trans, + bool mc_disabled) +{ + int set; + int err = 0; + + if (switchdev_trans_ph_prepare(trans)) + return 0; + + if (mlxsw_sp_port->mc_router != mlxsw_sp_port->mc_flood) { + set = mc_disabled ? + mlxsw_sp_port->mc_flood : mlxsw_sp_port->mc_router; + err = mlxsw_sp_port_flood_table_set(mlxsw_sp_port, + MLXSW_SP_FLOOD_TABLE_MC, + set); + } + + if (!err) + mlxsw_sp_port->mc_disabled = mc_disabled; + + return err; +} + int mlxsw_sp_vport_flood_set(struct mlxsw_sp_port *mlxsw_sp_vport, u16 fid, bool set) { @@ -461,6 +485,10 @@ static int mlxsw_sp_port_attr_set(struct net_device *dev, err = mlxsw_sp_port_attr_mc_router_set(mlxsw_sp_port, trans, attr->u.mrouter); break; + case SWITCHDEV_ATTR_ID_BRIDGE_MC_DISABLED: + err = mlxsw_sp_port_mc_disabled_set(mlxsw_sp_port, trans, + attr->u.mc_disabled); + break; default: err = -EOPNOTSUPP; break;