From patchwork Fri Feb 15 20:16:49 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1043162 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="dzT0s3B3"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 441PgM6n43z9sDr for ; Sat, 16 Feb 2019 07:17:03 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387612AbfBOURC (ORCPT ); Fri, 15 Feb 2019 15:17:02 -0500 Received: from mail-yb1-f196.google.com ([209.85.219.196]:44138 "EHLO mail-yb1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729019AbfBOURB (ORCPT ); Fri, 15 Feb 2019 15:17:01 -0500 Received: by mail-yb1-f196.google.com with SMTP id j85so934798ybg.11 for ; Fri, 15 Feb 2019 12:17:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=y2qm7A+/CCgrfTstiWJF722XPuBVch01JWCyDALceMo=; b=dzT0s3B3ybv9FeE5+8hg3GWSrZUa1ySJtaIo1DnNRbBTgb4YAdOeJH6j0Mven+e296 l7R0ME5BJ8H7Hp5/5tmPM3TuRKbWHj6IxFA+dV6Tp/iIFEcxhz61QV20O33CRTIMSwwi q5AryqbkHJ2ALf/ZLwMWtJ0XvSsRhzhwzk6cs8WpC1QToLfKSdAT+/UtIL35a88GZh/5 cPp69zHDRIY77O9A/3ZoFaTDyky4XEetst9VZcFBvzE982B3q8FVIszPd9E71nIXkYvE DeOG4tSFoAlKfrPBv/BdUIcBxRKpktOyN1sLnyuPZ47PVri9iTcHf0f6IP4z5pBrTEMb NRkA== 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=y2qm7A+/CCgrfTstiWJF722XPuBVch01JWCyDALceMo=; b=ElmST1TBjbzrdrUyRTF2L3AKxht4Pah9tuQQmNJRVc6w6M5T1W/XHwfMF/TBfZnXzc bZoikjbVW9lz7C9ScyH4dWkHe/eUOvoIlHUEGc1EoLtxiXhoaX76ENUxuSzqPQ92iA8G 3ZfEaEzerreXeoiktmTSUe4g4Z+i4Ws7bfHzkAJkA3+BTyP9f9HpCJ6t/aa2KuAEHyfh IcPw1/Rh+sNyXzdR4V5cqO0YIcD7eXpVLd6CIfQP9d8qyfc90zsVzA2W44T0Zd7smYaZ 61kMQV6TuQilpa5OhmvFKMvvlRVmxRhE/ox+lxkfBB0y701j9SYsi0hUenSQIA0XH3+E F05Q== X-Gm-Message-State: AHQUAubfODz2kB6IU3Sr63cfx3LtM35clCXZXXvOPNUMbxYFBZBzj1f8 upeN3jx9Zz4hphzQAzWxN4RGVDci X-Google-Smtp-Source: AHgI3IbeiX3PvOcnXxpkj9lquga7+31Ax2YeUQgIfu3nrmJd+EIybLbthFROIc36flFChfhuDm8yQQ== X-Received: by 2002:a25:c9c6:: with SMTP id z189mr8559481ybf.377.1550261819795; Fri, 15 Feb 2019 12:16:59 -0800 (PST) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id y67sm2889574ywf.89.2019.02.15.12.16.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 15 Feb 2019 12:16:59 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@gmail.com, Florian Fainelli Subject: [PATCH net 1/5] net: dsa: b53: Fix default VLAN ID Date: Fri, 15 Feb 2019 12:16:49 -0800 Message-Id: <20190215201653.20988-2-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190215201653.20988-1-f.fainelli@gmail.com> References: <20190215201653.20988-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We were not consistent in how the default VID of a given port was defined, b53_br_leave() would make sure the VLAN ID would be either 0/1 depending on the switch generation, but b53_configure_vlan(), which is the default configuration would unconditionally set it to 1. The correct value is 1 for 5325/5365 series and 0 otherwise. To avoid repeating that mistake ever again, introduce a helper function: b53_default_pvid() to factor that out. Fixes: 967dd82ffc52 ("net: dsa: b53: Add support for Broadcom RoboSwitch") Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 0e4bbdcc614f..964a9ec4652a 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -632,15 +632,25 @@ static void b53_enable_mib(struct b53_device *dev) b53_write8(dev, B53_MGMT_PAGE, B53_GLOBAL_CONFIG, gc); } +static u16 b53_default_pvid(struct b53_device *dev) +{ + if (is5325(dev) || is5365(dev)) + return 1; + else + return 0; +} + int b53_configure_vlan(struct dsa_switch *ds) { struct b53_device *dev = ds->priv; struct b53_vlan vl = { 0 }; - int i; + int i, def_vid; + + def_vid = b53_default_pvid(dev); /* clear all vlan entries */ if (is5325(dev) || is5365(dev)) { - for (i = 1; i < dev->num_vlans; i++) + for (i = def_vid; i < dev->num_vlans; i++) b53_set_vlan_entry(dev, i, &vl); } else { b53_do_vlan_op(dev, VTA_CMD_CLEAR); @@ -650,7 +660,7 @@ int b53_configure_vlan(struct dsa_switch *ds) b53_for_each_port(dev, i) b53_write16(dev, B53_VLAN_PAGE, - B53_VLAN_PORT_DEF_TAG(i), 1); + B53_VLAN_PORT_DEF_TAG(i), def_vid); if (!is5325(dev) && !is5365(dev)) b53_set_jumbo(dev, dev->enable_jumbo, false); @@ -1326,12 +1336,8 @@ int b53_vlan_del(struct dsa_switch *ds, int port, vl->members &= ~BIT(port); - if (pvid == vid) { - if (is5325(dev) || is5365(dev)) - pvid = 1; - else - pvid = 0; - } + if (pvid == vid) + pvid = b53_default_pvid(dev); if (untagged && !dsa_is_cpu_port(ds, port)) vl->untag &= ~(BIT(port)); @@ -1644,10 +1650,7 @@ void b53_br_leave(struct dsa_switch *ds, int port, struct net_device *br) b53_write16(dev, B53_PVLAN_PAGE, B53_PVLAN_PORT_MASK(port), pvlan); dev->ports[port].vlan_ctl_mask = pvlan; - if (is5325(dev) || is5365(dev)) - pvid = 1; - else - pvid = 0; + pvid = b53_default_pvid(dev); /* Make this port join all VLANs without VLAN entries */ if (is58xx(dev)) { From patchwork Fri Feb 15 20:16:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1043163 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="pQTIjAWn"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 441PgP6j2dz9sDr for ; Sat, 16 Feb 2019 07:17:05 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391143AbfBOURE (ORCPT ); Fri, 15 Feb 2019 15:17:04 -0500 Received: from mail-yb1-f193.google.com ([209.85.219.193]:39936 "EHLO mail-yb1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1733191AbfBOURD (ORCPT ); Fri, 15 Feb 2019 15:17:03 -0500 Received: by mail-yb1-f193.google.com with SMTP id x13so4273498ybm.7 for ; Fri, 15 Feb 2019 12:17:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Dn5Xrka7oPpFXUszSqf04vJKMymjYDaq2zGfoUQHWCo=; b=pQTIjAWnxJjG3BEo+vjc6ybDG2e0F7iVshLReUZvgF53iYnG+XVdDRFjL3ZatDWtM/ iN8oNb/Oi1oFV3ye48hiYjJ34Bylt+1O/fzFE4g5txvwT2wjOzboee7Gy/qS3UKbnrq7 AZWKMgqJolYpjsC9xYmbhsUoYgEyoLWX/1xisrskVCBa+QNXquhN2hm8DfTxcuGPfYpm xHweKvKTFiMi0M6JQrbN4DWOwM6jPac+f2lyBPaGc3H7pjyTOWelNM7N5SPpZdif/Pgm yLIjUlFeBhLu7yNh7yuMUh3YXeOTy5//3IN92wo6cXtacZIRMIZSJdoMGryaVX5fnKjf LkaQ== 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=Dn5Xrka7oPpFXUszSqf04vJKMymjYDaq2zGfoUQHWCo=; b=W2xin8N3yurzMwXqYKk/+VtbNm2WheGPl3u7qmUvAl1j3MC9y5gmosyIjdoOYJt3EI g+u1GCZoHch24dgOijWDA5OiMA3G7DI5RnPS84jCK9fX0exqOh3oY2iWa7Ty2dLIRRhO be45xnXEJHQ79MYxTzn97FnzAhTPmMRBg0VbRydCLrJCvJ/m2sfTTB8GFwcD6FpJI9tm xSxytmyY/La0Lw/koQPIBE2rsfIKTPjH+y11ZGSjtBrMuuAhSHDuGWZepVciz0jK5RB3 S63Ke6eMH7xQpqT9GGG1CzmRch7apW32HplFLIZWPTl5gPLeWAh4goZvLCdBZA5uJbdh HM6Q== X-Gm-Message-State: AHQUAuZKaf24KemAz8RDmjOdoSA5SIpIF4Z/DrupLiF6hIkSEJPJSi4I +GxR1fCfBmF9zH5YJu/BQW+Hh7hf X-Google-Smtp-Source: AHgI3IZg7IjomnDeyhqZIDkuRN5nhdq7B5w/8bFMLDP/BlldxjIvwckCR09F/LldSRu2o/L8vIJKTg== X-Received: by 2002:a25:cbd8:: with SMTP id b207mr9585735ybg.497.1550261821468; Fri, 15 Feb 2019 12:17:01 -0800 (PST) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id y67sm2889574ywf.89.2019.02.15.12.16.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 15 Feb 2019 12:17:00 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@gmail.com, Florian Fainelli Subject: [PATCH net 2/5] net: dsa: b53: Properly account for VLAN filtering Date: Fri, 15 Feb 2019 12:16:50 -0800 Message-Id: <20190215201653.20988-3-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190215201653.20988-1-f.fainelli@gmail.com> References: <20190215201653.20988-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org VLAN filtering can be built into the kernel, and also dynamically turned on/off through the bridge master device. Allow re-configuring the switch appropriately to account for that by deciding whether VLAN table (v_table) misses should lead to a drop or forward. Fixes: a2482d2ce349 ("net: dsa: b53: Plug in VLAN support") Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 59 +++++++++++++++++++++++++++++--- drivers/net/dsa/b53/b53_priv.h | 3 ++ 2 files changed, 57 insertions(+), 5 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 964a9ec4652a..2fef4c564420 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -344,7 +344,8 @@ static void b53_set_forwarding(struct b53_device *dev, int enable) b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, mgmt); } -static void b53_enable_vlan(struct b53_device *dev, bool enable) +static void b53_enable_vlan(struct b53_device *dev, bool enable, + bool enable_filtering) { u8 mgmt, vc0, vc1, vc4 = 0, vc5; @@ -369,8 +370,13 @@ static void b53_enable_vlan(struct b53_device *dev, bool enable) vc0 |= VC0_VLAN_EN | VC0_VID_CHK_EN | VC0_VID_HASH_VID; vc1 |= VC1_RX_MCST_UNTAG_EN | VC1_RX_MCST_FWD_EN; vc4 &= ~VC4_ING_VID_CHECK_MASK; - vc4 |= VC4_ING_VID_VIO_DROP << VC4_ING_VID_CHECK_S; - vc5 |= VC5_DROP_VTABLE_MISS; + if (enable_filtering) { + vc4 |= VC4_ING_VID_VIO_DROP << VC4_ING_VID_CHECK_S; + vc5 |= VC5_DROP_VTABLE_MISS; + } else { + vc4 |= VC4_ING_VID_VIO_FWD << VC4_ING_VID_CHECK_S; + vc5 &= ~VC5_DROP_VTABLE_MISS; + } if (is5325(dev)) vc0 &= ~VC0_RESERVED_1; @@ -420,6 +426,9 @@ static void b53_enable_vlan(struct b53_device *dev, bool enable) } b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_MODE, mgmt); + + dev->vlan_enabled = enable; + dev->vlan_filtering_enabled = enable_filtering; } static int b53_set_jumbo(struct b53_device *dev, bool enable, bool allow_10_100) @@ -656,7 +665,7 @@ int b53_configure_vlan(struct dsa_switch *ds) b53_do_vlan_op(dev, VTA_CMD_CLEAR); } - b53_enable_vlan(dev, false); + b53_enable_vlan(dev, false, dev->vlan_filtering_enabled); b53_for_each_port(dev, i) b53_write16(dev, B53_VLAN_PAGE, @@ -1265,6 +1274,46 @@ EXPORT_SYMBOL(b53_phylink_mac_link_up); int b53_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering) { + struct b53_device *dev = ds->priv; + struct net_device *bridge_dev; + unsigned int i; + u16 pvid, new_pvid; + + /* Handle the case were multiple bridges span the same switch device + * and one of them has a different setting than what is being requested + * which would be breaking filtering semantics for any of the other + * bridge devices. + */ + b53_for_each_port(dev, i) { + bridge_dev = dsa_to_port(ds, i)->bridge_dev; + if (bridge_dev && + bridge_dev != dsa_to_port(ds, port)->bridge_dev && + br_vlan_enabled(bridge_dev) != vlan_filtering) { + netdev_err(bridge_dev, + "VLAN filtering is global to the switch!\n"); + return -EINVAL; + } + } + + b53_read16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), &pvid); + new_pvid = pvid; + if (dev->vlan_filtering_enabled && !vlan_filtering) { + /* Filtering is currently enabled, use the default PVID since + * the bridge does not expect tagging anymore + */ + dev->ports[port].pvid = pvid; + new_pvid = b53_default_pvid(dev); + } else if (!dev->vlan_filtering_enabled && vlan_filtering) { + /* Filtering is currently disabled, restore the previous PVID */ + new_pvid = dev->ports[port].pvid; + } + + if (pvid != new_pvid) + b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), + new_pvid); + + b53_enable_vlan(dev, dev->vlan_enabled, vlan_filtering); + return 0; } EXPORT_SYMBOL(b53_vlan_filtering); @@ -1280,7 +1329,7 @@ int b53_vlan_prepare(struct dsa_switch *ds, int port, if (vlan->vid_end > dev->num_vlans) return -ERANGE; - b53_enable_vlan(dev, true); + b53_enable_vlan(dev, true, dev->vlan_filtering_enabled); return 0; } diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index ec796482792d..4dc7ee38b258 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -91,6 +91,7 @@ enum { struct b53_port { u16 vlan_ctl_mask; struct ethtool_eee eee; + u16 pvid; }; struct b53_vlan { @@ -137,6 +138,8 @@ struct b53_device { unsigned int num_vlans; struct b53_vlan *vlans; + bool vlan_enabled; + bool vlan_filtering_enabled; unsigned int num_ports; struct b53_port *ports; }; From patchwork Fri Feb 15 20:16:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1043164 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="P8CxHcoV"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 441PgS1N9Cz9sDr for ; Sat, 16 Feb 2019 07:17:08 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391178AbfBOURG (ORCPT ); Fri, 15 Feb 2019 15:17:06 -0500 Received: from mail-yw1-f68.google.com ([209.85.161.68]:44521 "EHLO mail-yw1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391129AbfBOURE (ORCPT ); Fri, 15 Feb 2019 15:17:04 -0500 Received: by mail-yw1-f68.google.com with SMTP id x21so4164201ywx.11 for ; Fri, 15 Feb 2019 12:17:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=yvlVxHi1enfHdQfIsGA96spLReXR8Coqlasvs8f91ac=; b=P8CxHcoVjYsbe5S/PEpDHdtSQ/QrPxEOpNXazelIYbn3Ns9loEz3nCpjpN+/dyxL9e 4RHzfjd4u1pKJCJAF0ri+tvAdlVZxn5hjGPcfLuurVTK3esdDYnA4aR3JotAN3TezBTa 1qYRqwVfVsjOG9/6bMwM8SdyUIdiSHwEkAdSrw24Z3b7cDltgJKxaBYI0VADc3yocPyV o//IKHx1ZRX8QFPvRlteKqM8mPe2vYgExTkoWyKndIUqDw98LFobnx1OmpT9VcMtyIJl Luw9+3tVKcPZYY9AciJtbR9NqOI2mMa+ASo2u/d07OBITbiltDqDYltEKoR4PAm6hXvS 0pIw== 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=yvlVxHi1enfHdQfIsGA96spLReXR8Coqlasvs8f91ac=; b=e83B9eGlKSu7DWMAXfMIFwgJOru0Jn6/h6IjZaKRafZfZM6noo3vYkynI/hkh+rpT5 OsByMUIQJRVF/uIau47s6RdL+aU8mrJkq2/GZZhN9oA3q90hoCN0LMU4jDYVZMbtbDKA 0DSMNGTEpzmMI9ZIMI8R/zP4yWsSdRqtg5ZcfHtf77RbSp0IG+I5PrWqP0Uzpc8P/t83 tVq5gwdpfbAgJpoZ+uUyOTcJZTQmSAsIvBYVgqwISbzde9SkstWTCkXFF24bXVjOUwfC b+aNI8HIOrdUVnLoBoCbLlLCUnzIqrdpuhj9K334QUUPqPmY1Dmff/tauNKV+SyBZm9y 066Q== X-Gm-Message-State: AHQUAuYxrzIYi6D0cg5xVF84O3B/Ed/l9h6USX4WJNJu3hzDJ1lunnAF LTTFZzwJK4IIs5ER4bfVVKsr0EyU X-Google-Smtp-Source: AHgI3IYwrKpxkbV0l9ODJaBB/kpKMLbWaxSWjEo78XGVpGCEu8n1PuSYh9opjRskXjwA4nViDqRppQ== X-Received: by 2002:a0d:ccd0:: with SMTP id o199mr2727799ywd.402.1550261823155; Fri, 15 Feb 2019 12:17:03 -0800 (PST) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id y67sm2889574ywf.89.2019.02.15.12.17.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 15 Feb 2019 12:17:02 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@gmail.com, Florian Fainelli Subject: [PATCH net 3/5] net: systemport: Fix reception of BPDUs Date: Fri, 15 Feb 2019 12:16:51 -0800 Message-Id: <20190215201653.20988-4-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190215201653.20988-1-f.fainelli@gmail.com> References: <20190215201653.20988-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org SYSTEMPORT has its RXCHK parser block that attempts to validate the packet structures, unfortunately setting the L2 header check bit will cause Bridge PDUs (BPDUs) to be incorrectly rejected because they look like LLC/SNAP packets with a non-IPv4 or non-IPv6 Ethernet Type. Fixes: 4e8aedfe78c7 ("net: systemport: Turn on offloads by default") Signed-off-by: Florian Fainelli --- drivers/net/ethernet/broadcom/bcmsysport.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c index 28c9b0bdf2f6..bc3ac369cbe3 100644 --- a/drivers/net/ethernet/broadcom/bcmsysport.c +++ b/drivers/net/ethernet/broadcom/bcmsysport.c @@ -134,6 +134,10 @@ static void bcm_sysport_set_rx_csum(struct net_device *dev, priv->rx_chk_en = !!(wanted & NETIF_F_RXCSUM); reg = rxchk_readl(priv, RXCHK_CONTROL); + /* Clear L2 header checks, which would prevent BPDUs + * from being received. + */ + reg &= ~RXCHK_L2_HDR_DIS; if (priv->rx_chk_en) reg |= RXCHK_EN; else From patchwork Fri Feb 15 20:16:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1043165 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="GVfMulsd"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 441PgT4bfNz9sML for ; Sat, 16 Feb 2019 07:17:09 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2391190AbfBOURH (ORCPT ); Fri, 15 Feb 2019 15:17:07 -0500 Received: from mail-yw1-f65.google.com ([209.85.161.65]:42725 "EHLO mail-yw1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391148AbfBOURG (ORCPT ); Fri, 15 Feb 2019 15:17:06 -0500 Received: by mail-yw1-f65.google.com with SMTP id v201so4169604ywa.9 for ; Fri, 15 Feb 2019 12:17:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Deug8ONmxRdfpX7zf2YuILPdGz4kGSrjD2ZRviXD9kY=; b=GVfMulsdQ6N/wN1nbop4dcndnirPYEQ+C0GAm1HMLS63Bq1IwAGSt8aAKFgbscnZM5 e99Viuwct6b7/QPOXlYHFnS5SRZrOPIoGFIwoYrTdr9oem0folK4z0mJPACgqZ8CQHQR zt3jFrENsDI4jY+jeNzan/Yjo98c4ewGIAnWABsPWfxpCYnZekDtweG6q6zAikjY9WnQ LM/TvIZZOn5Un5el0RteVNEPeIrfBvVITAV0Vvq7bNjHDVYzY9UPJcR/KYwIhkoiEaMD IY3jxXtBbQ19iuqEbhn6RE4tRLmHLeAHY2ucna4nBQeIPz0t/IAL58FGRb9JLKySwQ97 +r3Q== 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=Deug8ONmxRdfpX7zf2YuILPdGz4kGSrjD2ZRviXD9kY=; b=XE3iZePOO+g4BJc+1La94IvpdhRoT6v/OwHdV4dx1usPgqSiu2YNeGGT/ueJ6ZVSLO F6HE2/iUNYTtrgDyeiUEC1IYSamN1TQgZ6O57anML0jKvMv37MErvWELcHF+I0UPdWij kcMoaUVtJdeUNQNLGxnOdGlD+Ou3/TnEivRJzplWxQNgPSxDi2T2q0CBcYHYvtaGiKL9 DIkrJev+lcIbdwFQFbulAGeNbFepmPG9koRyLUqGAXlb9LNWh5wskv0DTxGG3/BNlQ14 cMBBho03TF9u8wl/ZEf5VXYXXGzIsbY+fAmGVrb9NPOiYVFGsJbECP67muor4jIfm9Ie lKzQ== X-Gm-Message-State: AHQUAub40ZjuxCXeF9d3j8EFx2leQLbFiWqpR4ZEUOue9KfNFpy2stYM 7n1r2uWmBK/3kXmhxOAYPL1GI+eE X-Google-Smtp-Source: AHgI3Iag7ogMD7EJuSsbI/ns7ys93GuWDvKoieirsoKGZPhBH+sKfURk/YCfrJtSOBBR8qALIqFo+Q== X-Received: by 2002:a81:af43:: with SMTP id x3mr9663524ywj.281.1550261824866; Fri, 15 Feb 2019 12:17:04 -0800 (PST) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id y67sm2889574ywf.89.2019.02.15.12.17.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 15 Feb 2019 12:17:04 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@gmail.com, Florian Fainelli Subject: [PATCH net 4/5] net: dsa: bcm_sf2: Do not assume DSA master supports WoL Date: Fri, 15 Feb 2019 12:16:52 -0800 Message-Id: <20190215201653.20988-5-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190215201653.20988-1-f.fainelli@gmail.com> References: <20190215201653.20988-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We assume in the bcm_sf2 driver that the DSA master network device supports ethtool_ops::{get,set}_wol operations, which is not a given. Avoid de-referencing potentially non-existent function pointers and check them as we should. Fixes: 96e65d7f3f88 ("net: dsa: bcm_sf2: add support for Wake-on-LAN") Signed-off-by: Florian Fainelli --- drivers/net/dsa/bcm_sf2.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index 17ec32b0a1cc..14138d423cf1 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -726,10 +726,11 @@ static void bcm_sf2_sw_get_wol(struct dsa_switch *ds, int port, { struct net_device *p = ds->ports[port].cpu_dp->master; struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); - struct ethtool_wolinfo pwol; + struct ethtool_wolinfo pwol = { }; /* Get the parent device WoL settings */ - p->ethtool_ops->get_wol(p, &pwol); + if (p->ethtool_ops->get_wol) + p->ethtool_ops->get_wol(p, &pwol); /* Advertise the parent device supported settings */ wol->supported = pwol.supported; @@ -750,9 +751,10 @@ static int bcm_sf2_sw_set_wol(struct dsa_switch *ds, int port, struct net_device *p = ds->ports[port].cpu_dp->master; struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds); s8 cpu_port = ds->ports[port].cpu_dp->index; - struct ethtool_wolinfo pwol; + struct ethtool_wolinfo pwol = { }; - p->ethtool_ops->get_wol(p, &pwol); + if (p->ethtool_ops->get_wol) + p->ethtool_ops->get_wol(p, &pwol); if (wol->wolopts & ~pwol.supported) return -EINVAL; From patchwork Fri Feb 15 20:16:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Fainelli X-Patchwork-Id: 1043166 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="WXE70Rho"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 441PgW4Z2wz9sDr for ; Sat, 16 Feb 2019 07:17:11 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403855AbfBOURJ (ORCPT ); Fri, 15 Feb 2019 15:17:09 -0500 Received: from mail-yw1-f66.google.com ([209.85.161.66]:46840 "EHLO mail-yw1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391129AbfBOURI (ORCPT ); Fri, 15 Feb 2019 15:17:08 -0500 Received: by mail-yw1-f66.google.com with SMTP id n12so4161411ywn.13 for ; Fri, 15 Feb 2019 12:17:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=4H6I855rntrFBs6LXCvj8b+q8wX2M2JQx1AvLZnRbZY=; b=WXE70Rho2WYxTxzqnbz+wp14JGqZt3NpcaHETzdXKyQwJXaVuqV//Ayhd8ee8oNS1i oeNB8XIbvK6Vd6vAuVrdLA4OxKx3A/4DOtjGaR+jx/eu5I6S89SIVgH1GiTR2HygVDFA xXZCm4Y1WYWDQ6CmVorvGX0mbfvLiwx+XrUMyyUbQ4v1Cw3uh78Q0R26MJ6wT+4dVEnI 3PkV06z8CtZf8ApUmfRide2/9Jfop1qBv7h6zZgteYNTq2ZHSZUuRcD0SgXdknuk69jg lk2NqlDENtuJdlgvXohzda9Mc0AdWIyzpaWVN4YviBoxC+uKLNL9O7H9QbD+Hos8E3pv QtRw== 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=4H6I855rntrFBs6LXCvj8b+q8wX2M2JQx1AvLZnRbZY=; b=tDzC0DxEiT6a4ogQBLPuBXQAIU5QmiD6N13m027f3h62QirbFzLQQ06rlvEX+a6X2/ 4Nb7H7B9crc8a+9FMslI7OF8gVZcb0x7IxINNcn3y9hyrEWwonHWICbzeaBKPXxemFlx zwhvCjwf87MYHc9Tr70sAukEzSGeABbkTmAaXmQj2bkCssFs9J4SGIVcJsSJsFUeI7jd iaV1z8OdApYPxJykjQG1gi86u7NNodo7rqIgFbFUu92fZGghdf23lmEabK2nzf7xE+Un kbBX1v3PrQM9A157EOOPzSJX0VaK2Bl82do2xawiCj/JVNDWHbjbJMG9jVT9b1fGKSOD Ouvw== X-Gm-Message-State: AHQUAubugv4nT7gKiFba5u3868hchvjUu/iLX5e3bGGCChOPxI0GzgZr HegXry6HFV6UCrJsp38IYme0xQwG X-Google-Smtp-Source: AHgI3IYhxDXgZAlg8ubrDaKX4AtMf4QvMFMH33NyyyR7TLzSdjBU7tncADO0Dg14MovpmYjXLgcq+A== X-Received: by 2002:a81:34a:: with SMTP id 71mr9852303ywd.131.1550261826623; Fri, 15 Feb 2019 12:17:06 -0800 (PST) Received: from fainelli-desktop.igp.broadcom.net ([192.19.223.250]) by smtp.gmail.com with ESMTPSA id y67sm2889574ywf.89.2019.02.15.12.17.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 15 Feb 2019 12:17:05 -0800 (PST) From: Florian Fainelli To: netdev@vger.kernel.org Cc: davem@davemloft.net, andrew@lunn.ch, vivien.didelot@gmail.com, Florian Fainelli Subject: [PATCH net 5/5] net: dsa: b53: Do not program CPU port's PVID Date: Fri, 15 Feb 2019 12:16:53 -0800 Message-Id: <20190215201653.20988-6-f.fainelli@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190215201653.20988-1-f.fainelli@gmail.com> References: <20190215201653.20988-1-f.fainelli@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The CPU port is special and does not need to obey VLAN restrictions as far as untagged traffic goes, also, having the CPU port be part of a particular PVID is against the idea of keeping it tagged in all VLANs. Fixes: ca8931948344 ("net: dsa: b53: Keep CPU port as tagged in all VLANs") Signed-off-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 2fef4c564420..c76892ac4e69 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1359,7 +1359,7 @@ void b53_vlan_add(struct dsa_switch *ds, int port, b53_fast_age_vlan(dev, vid); } - if (pvid) { + if (pvid && !dsa_is_cpu_port(ds, port)) { b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), vlan->vid_end); b53_fast_age_vlan(dev, vid);