Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp333113pxb; Mon, 16 Aug 2021 06:31:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwfm4QjJinyNFQRvouEYm+eCrf0kjMxMY91T4fA0FV/qUtYQ7fBAr+DDs0dVFj6vS4fA40+ X-Received: by 2002:a17:906:aecc:: with SMTP id me12mr14359386ejb.97.1629120719144; Mon, 16 Aug 2021 06:31:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629120719; cv=none; d=google.com; s=arc-20160816; b=xTreIkCgRzqQI864t/TDqNDQhoorD8k4jd6Fs37VX54/cIQjb0UKJhxqzQkVgA7Hcy XCRYzndzz7loo1gSv3aR/mZrE+dMKMNiilUY1vcRqasdnZWFjLAMYQ94iBaA+npXasYK +Zh7SmWtpCaSBr89FsVBWOMHOKHivjsr9Akte3nlT7gpFc3UDC4ILhIWFCuWQ7+qYP4v h0+fZeCeQnJSVG+sGBfwstHn/CpzmrsiPArwfnTqjVa3tUPIxCLjk6Z7Seui34jMqITE Uw6wkfDOxuT7cPFjOXpXU6YvpkQVx2rEUWh+0vxv2R+ejC7r0fH9Ed5U2TZcC4Fc0zL3 ymaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=lGqpZAfbJQaN58BPzEczVQ4Q2XN+PuApQ6qBTKJNjoU=; b=BV3ZaA84OS23SqtTwZyo44coqVkdC7RhxITgXJQ2o93CJm3g0mlXW6uM/CZP0IPsQm UoyU7JEVRP+o8zAvAEIGwMsH3s/eYCfWYb5KpSoYymv8UIeuFyv7l9FG/bYI5T3681J8 jAmjor7XJS2XqllQOcJS8/EvQ7NUf1IhV1j+qp4zNLjOE5L+sU0+pDLO6Lq8m2WMWwX8 PdPU+wPCYkovX1PcAMsaR91q0E65yZsmCK2f0ZWvlKA8tP0p1Xrxje94QkY0ZVvgFYhY IbQ+x50LQ6AIZMcyO85MQ7FO/tTNrkUQzG9QSsBVS/aSzUl3zeag4MGJQGHjhsj9TSnB fJ5g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Zn95xL8N; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id um14si10318282ejb.397.2021.08.16.06.31.35; Mon, 16 Aug 2021 06:31:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Zn95xL8N; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241495AbhHPN3m (ORCPT + 99 others); Mon, 16 Aug 2021 09:29:42 -0400 Received: from mail.kernel.org ([198.145.29.99]:43050 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240566AbhHPNTx (ORCPT ); Mon, 16 Aug 2021 09:19:53 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id B87CB632AE; Mon, 16 Aug 2021 13:14:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1629119688; bh=X7VHotr/bJrTUcEe9GqHBUXNv2zRVTyyICQnBuZmeRI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Zn95xL8NI1/x6xPKr5HBgBIgiDgM/0I3gOVzBjNOaCLNOJA5U7UMbvlxX9bg47TL0 F5y/m8J8zzSrBAVGluX0NEyJKXHRoU5t831P3B4WHc4C+OVh5+syn2ZL/vJ/k/ffk8 /xtwgL32ap4HEWhbltTxbp2lhSozmOWS6oxqpBlQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Ben Hutchings , "David S. Miller" , Sasha Levin Subject: [PATCH 5.13 096/151] net: dsa: microchip: ksz8795: Fix VLAN filtering Date: Mon, 16 Aug 2021 15:02:06 +0200 Message-Id: <20210816125447.236089526@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210816125444.082226187@linuxfoundation.org> References: <20210816125444.082226187@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ben Hutchings [ Upstream commit 164844135a3f215d3018ee9d6875336beb942413 ] Currently ksz8_port_vlan_filtering() sets or clears the VLAN Enable hardware flag. That controls discarding of packets with a VID that has not been enabled for any port on the switch. Since it is a global flag, set the dsa_switch::vlan_filtering_is_global flag so that the DSA core understands this can't be controlled per port. When VLAN filtering is enabled, the switch should also discard packets with a VID that's not enabled on the ingress port. Set or clear each external port's VLAN Ingress Filter flag in ksz8_port_vlan_filtering() to make that happen. Fixes: e66f840c08a2 ("net: dsa: ksz: Add Microchip KSZ8795 DSA driver") Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/dsa/microchip/ksz8795.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index 4bd735c5183c..8e2a8103d590 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -1078,8 +1078,14 @@ static int ksz8_port_vlan_filtering(struct dsa_switch *ds, int port, bool flag, if (ksz_is_ksz88x3(dev)) return -ENOTSUPP; + /* Discard packets with VID not enabled on the switch */ ksz_cfg(dev, S_MIRROR_CTRL, SW_VLAN_ENABLE, flag); + /* Discard packets with VID not enabled on the ingress port */ + for (port = 0; port < dev->phy_port_cnt; ++port) + ksz_port_cfg(dev, port, REG_PORT_CTRL_2, PORT_INGRESS_FILTER, + flag); + return 0; } @@ -1662,6 +1668,11 @@ static int ksz8_switch_init(struct ksz_device *dev) */ dev->ds->untag_bridge_pvid = true; + /* VLAN filtering is partly controlled by the global VLAN + * Enable flag + */ + dev->ds->vlan_filtering_is_global = true; + return 0; } -- 2.30.2