From patchwork Wed Jan 6 10:11:51 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 563746 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 D395C14029E for ; Wed, 6 Jan 2016 21:13:02 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=resnulli-us.20150623.gappssmtp.com header.i=@resnulli-us.20150623.gappssmtp.com header.b=y4Zl1EbI; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752314AbcAFKM5 (ORCPT ); Wed, 6 Jan 2016 05:12:57 -0500 Received: from mail-wm0-f52.google.com ([74.125.82.52]:33296 "EHLO mail-wm0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752292AbcAFKMD (ORCPT ); Wed, 6 Jan 2016 05:12:03 -0500 Received: by mail-wm0-f52.google.com with SMTP id f206so54081415wmf.0 for ; Wed, 06 Jan 2016 02:12:02 -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=aILL7M55IIk3EMvyG5FTUnA+0WpyX8Vm41+gI+Nm7Ng=; b=y4Zl1EbILxbL8SGrlGmDJ+f+9Xq/auJPqajF28MzJ4qy9v/0td/31quTyzWZLZWUJt 7HerLozxOgfCMNiM9ZTjW85HujF376/JXDac+xbhHOXzTt9eH8h+a55gJAQ7UcMsWqnH TE7D3m7vZC/LvLpoG7d7jKczlabVyQlw+IER7xhhHXaL3e/SUISBymasnMBL2Efwcuim Q+aSfsOFMUGXhIKzwhGHPcEL6c9w60xHwcdp5PAd42UsZouZf5eysLqGyHZ3mqyFhqa4 wni9mNwfsuZ2AhQbJvTYZDbpy8JcBzSF66N0dBnSzWHtYIOYhqCXyVx2YawOx4MM7mjm STFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=aILL7M55IIk3EMvyG5FTUnA+0WpyX8Vm41+gI+Nm7Ng=; b=jJv3HVznURENpuqIxXYnafHPrKbwiBsvLQiOWykr5CtsQDcRQHiNtx3EsfwIKWoO5z E2S6kjagOwGmEjIy+Owui1sGQM6BsJvPQ3TpCbHBGBHwCuCsVaowkh6nQasbsJdudYnE cbJUsj7ZlT4O/mlP/JZvkDpNQkJn9rsnyvVkDq2HyGnqPRv0xVGQh4SR9yetOU5WKgB1 d3ykUuwsmgAwC+va7Wz6vbsaa42j7XQPhbUIFMg9lWqBU/vHqUjYSJdZ56kvE3+oYRPF xD7uIupvqCq1JFSByViqR0D8CQxWGHf/p6KJGRTG9FByyILd7TQFlFmdr2f12Mm18dDY HA8w== X-Gm-Message-State: ALoCoQnZSpju/hZUGpvaq1GKKC58fUIsZBqCQ9q4lzSOwzN3fam77Uv4f9ZcwXJx/SnMcEqwUsbieqdmSPCxZr9vzPRDSQ9Dww== X-Received: by 10.28.129.202 with SMTP id c193mr8846604wmd.35.1452075122199; Wed, 06 Jan 2016 02:12:02 -0800 (PST) Received: from localhost (ip-94-113-120-24.net.upcbroadband.cz. [94.113.120.24]) by smtp.gmail.com with ESMTPSA id i63sm7905182wmf.24.2016.01.06.02.12.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 06 Jan 2016 02:12:01 -0800 (PST) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, idosch@mellanox.com, eladr@mellanox.com, yotamg@mellanox.com, ogerlitz@mellanox.com, stephen@networkplumber.org Subject: [patch net-next 3/8] bridge: add vlan filtering change notification Date: Wed, 6 Jan 2016 11:11:51 +0100 Message-Id: <1452075116-5726-4-git-send-email-jiri@resnulli.us> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1452075116-5726-1-git-send-email-jiri@resnulli.us> References: <1452075116-5726-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: Elad Raz Notifying hardware about bridge vlan-aware changes. Signed-off-by: Elad Raz Signed-off-by: Jiri Pirko --- net/bridge/br_vlan.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/net/bridge/br_vlan.c b/net/bridge/br_vlan.c index 66c4549..190fb33 100644 --- a/net/bridge/br_vlan.c +++ b/net/bridge/br_vlan.c @@ -626,9 +626,21 @@ void br_recalculate_fwd_mask(struct net_bridge *br) int __br_vlan_filter_toggle(struct net_bridge *br, unsigned long val) { + struct switchdev_attr attr = { + .orig_dev = br->dev, + .id = SWITCHDEV_ATTR_ID_BRIDGE_VLAN_FILTERING, + .flags = SWITCHDEV_F_SKIP_EOPNOTSUPP, + .u.vlan_filtering = val, + }; + int err; + if (br->vlan_enabled == val) return 0; + err = switchdev_port_attr_set(br->dev, &attr); + if (err && err != -EOPNOTSUPP) + return err; + br->vlan_enabled = val; br_manage_promisc(br); recalculate_group_addr(br); @@ -639,13 +651,15 @@ int __br_vlan_filter_toggle(struct net_bridge *br, unsigned long val) int br_vlan_filter_toggle(struct net_bridge *br, unsigned long val) { + int err; + if (!rtnl_trylock()) return restart_syscall(); - __br_vlan_filter_toggle(br, val); + err = __br_vlan_filter_toggle(br, val); rtnl_unlock(); - return 0; + return err; } int __br_vlan_set_proto(struct net_bridge *br, __be16 proto)