From patchwork Mon Aug 9 22:59:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Hutchings X-Patchwork-Id: 494215 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C9018C4338F for ; Mon, 9 Aug 2021 22:59:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B209F60FE3 for ; Mon, 9 Aug 2021 22:59:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236970AbhHIW7i (ORCPT ); Mon, 9 Aug 2021 18:59:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233128AbhHIW7g (ORCPT ); Mon, 9 Aug 2021 18:59:36 -0400 Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE7F0C0613D3 for ; Mon, 9 Aug 2021 15:59:15 -0700 (PDT) Received: by mail-ej1-x62e.google.com with SMTP id c25so17924679ejb.3 for ; Mon, 09 Aug 2021 15:59:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mind.be; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=uXG7ELmiZoNzLZ2pgYPQUSM9JkoNS53RPkD9vHo8gV8=; b=BFobs69XpLFO/a5gXkE1aVaSzmnRBd3m82uFIhFvzQnB2l+y8vpOfHEzMK0bnPxYVz MTGpyrwUGc5qzflkZaunjSZjxsMc2rwaaB7nDYols9T6TMf3pHD+7sBX5C5VcNfLcmE0 LQezddntSGvGPhe8urCTeHRKuv8JamMorHKCr0L//iW7ox+71SO3X/cN3UvM0xG0t/C2 s+QO6Zf9O7/3MR9I3PUPXVmsxE6vP/3bm38YtlAWjsfPIFkiAH9qk1YZoCr3HS5F6PD2 NbMBq/xq1tHu8+p2iQ23zY7y16XcPNemGB9+8tnm5OibgLTUTs9S5ibKGdMUWmGJ1H+l 8k3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=uXG7ELmiZoNzLZ2pgYPQUSM9JkoNS53RPkD9vHo8gV8=; b=cQni3J4hFnH4r9QXHEM39NoV27Zr52zaYCdw6IHx+UCQ+58vCcOyszKUY5kmOA15aw NgtxAIC004kxF44uvJCqTOo5fifLBkBfgAQ4RJ8etJEmT8n27HwTXpw7uoPo9zFXSb0f qntVhOw6KHFRZSufiA5kRnSJ928NZPS6jcVl5CAUaTElpTJ+lUseUvkINlQkkm5ycyK1 zOHejPmJDXii+cWDvNwpXnDT4Ip8vrS7s3PwznOpYRUcVQWaqW88S1+ZIB3RmGuO8rTI 8r+Bk6BOtjsWQHMkNohdVi3elsw9qv5FisO9P4xyR+bLdCu9jCAIQP74IbuoQZ5lWlhJ KC5w== X-Gm-Message-State: AOAM531eeziOxBNgdpTnBWQAziOUfnGAs3S4XBgMM16ONjvC4K2R6xz9 cMAgmVMGfrCiJqWvMR96RBSPkA== X-Google-Smtp-Source: ABdhPJwOUi6hZgQaJlBLz8kLXTLv81VXP7Qwlu3kJhPk8gXVc2SlaIZchFwK5jCe681pkPAIlcw0tg== X-Received: by 2002:a17:906:2994:: with SMTP id x20mr9915174eje.471.1628549954366; Mon, 09 Aug 2021 15:59:14 -0700 (PDT) Received: from cephalopod (168.7-181-91.adsl-dyn.isp.belgacom.be. [91.181.7.168]) by smtp.gmail.com with ESMTPSA id i10sm8665546edf.12.2021.08.09.15.59.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Aug 2021 15:59:14 -0700 (PDT) Date: Tue, 10 Aug 2021 00:59:12 +0200 From: Ben Hutchings To: Woojung Huh , UNGLinuxDriver@microchip.com Cc: netdev@vger.kernel.org Subject: [PATCH net 1/7] net: dsa: microchip: Fix ksz_read64() Message-ID: <20210809225911.GB17207@cephalopod> References: <20210809225753.GA17207@cephalopod> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210809225753.GA17207@cephalopod> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org ksz_read64() currently does some dubious byte-swapping on the two halves of a 64-bit register, and then only returns the high bits. Replace this with a straightforward expression. Fixes: e66f840c08a2 ("net: dsa: ksz: Add Microchip KSZ8795 DSA driver") Signed-off-by: Ben Hutchings --- drivers/net/dsa/microchip/ksz_common.h | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz_common.h b/drivers/net/dsa/microchip/ksz_common.h index 2e6bfd333f50..6afbb41ad39e 100644 --- a/drivers/net/dsa/microchip/ksz_common.h +++ b/drivers/net/dsa/microchip/ksz_common.h @@ -205,12 +205,8 @@ static inline int ksz_read64(struct ksz_device *dev, u32 reg, u64 *val) int ret; ret = regmap_bulk_read(dev->regmap[2], reg, value, 2); - if (!ret) { - /* Ick! ToDo: Add 64bit R/W to regmap on 32bit systems */ - value[0] = swab32(value[0]); - value[1] = swab32(value[1]); - *val = swab64((u64)*value); - } + if (!ret) + *val = (u64)value[0] << 32 | value[1]; return ret; } From patchwork Mon Aug 9 22:59:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Hutchings X-Patchwork-Id: 494836 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EDDEBC4338F for ; Mon, 9 Aug 2021 22:59:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D2DA661002 for ; Mon, 9 Aug 2021 22:59:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236975AbhHIW7y (ORCPT ); Mon, 9 Aug 2021 18:59:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49394 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233128AbhHIW7w (ORCPT ); Mon, 9 Aug 2021 18:59:52 -0400 Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 85F66C0613D3 for ; Mon, 9 Aug 2021 15:59:31 -0700 (PDT) Received: by mail-ej1-x62e.google.com with SMTP id go31so31824686ejc.6 for ; Mon, 09 Aug 2021 15:59:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mind.be; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=y3AKjkQhrbsJp6r3NozM8uONsoZG+T4yti+l7i+HdTw=; b=W8Ygkzgdv/oXhiKEDZfPiorS0cbmaV33IU6eHAFr7DG5TgHW8Q8pA/mTsmQfuf/spX Jo1sfSLa+xD/ZIujZsIntUxhv4yE/1rlKiwPXNl2EEt2usDIRLRzoeVYRnfTNYr7RX12 8xPgLhXkK/XF2b/H5KGnJWGSGAnNXvycXIeGyilhgelpjCH2mNvi470ln1+b076KcGF0 atqxVvFShxGvUWgyTlE6IFvkQ8N3fL1CbATGoU3ai48VS4S2CmPbsZ+ogBj+JTUtdeNm vT4AtaO791QocCs3KnQtNCdlOj/3qjspf/0pV+5ksDOq8pCdRjVyvHm7P9ArFCl6/K10 uxBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=y3AKjkQhrbsJp6r3NozM8uONsoZG+T4yti+l7i+HdTw=; b=HYyN+hNNOzLOzD1g1+/2F/TvcVhx8UOYltiIqeo5/v7ZAMoMdNsyE8C8JZvLXl67h+ FcGftKLP/c7TBpp8dE+g9AMMSAindaFp/mCPtLuQEdjM2p86sTtSvgedWjzDkqGMkoc4 TvYXTLUSrU328F3CUHovvrc1c+5H1Ih6739p+9igkYdm2ETP2larBp8xN6ItBS7GzX8l 8tuV8Vza5kLB9HGC34WK/MdwwB4N3pfuzPmCUPiRzvorMMVNfFOsrRVJxig7zDQprqYo wV0s3Md4iRUUpq178sqsWOUTowSXYsNEaTpBaFUGWCwo0cKuIFbuwUpIzDku48sf8ycZ 8qyA== X-Gm-Message-State: AOAM531exgqZxAy1ghYNChzyY3lNlY6/gCM0RNsqr9c5Vo0GIKJS+zPB R+R7GqBLVhInVwAzM3k3svGCJw== X-Google-Smtp-Source: ABdhPJxqcJ16ykQwMaTUp/UVxGBDYPP+sQh99V0G2ImLy+bXYAOPJ35tQXfKx7x8TvoMmeGtmXZnAg== X-Received: by 2002:a17:906:a0ce:: with SMTP id bh14mr24253093ejb.434.1628549970159; Mon, 09 Aug 2021 15:59:30 -0700 (PDT) Received: from cephalopod (168.7-181-91.adsl-dyn.isp.belgacom.be. [91.181.7.168]) by smtp.gmail.com with ESMTPSA id q8sm8585719edv.95.2021.08.09.15.59.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Aug 2021 15:59:29 -0700 (PDT) Date: Tue, 10 Aug 2021 00:59:28 +0200 From: Ben Hutchings To: Woojung Huh , UNGLinuxDriver@microchip.com Cc: netdev@vger.kernel.org Subject: [PATCH net 2/7] net: dsa: microchip: ksz8795: Fix PVID tag insertion Message-ID: <20210809225927.GC17207@cephalopod> References: <20210809225753.GA17207@cephalopod> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210809225753.GA17207@cephalopod> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org ksz8795 has never actually enabled PVID tag insertion, and it also programmed the PVID incorrectly. To fix this: * Allow tag insertion to be controlled per ingress port. On most chips, set bit 2 in Global Control 19. On KSZ88x3 this control flag doesn't exist. * When adding a PVID: - Set the appropriate register bits to enable tag insertion on egress at every other port if this was the packet's ingress port. - Mask *out* the VID from the default tag, before or-ing in the new PVID. * When removing a PVID: - Clear the same control bits to disable tag insertion. - Don't update the default tag. This wasn't doing anything useful. Fixes: e66f840c08a2 ("net: dsa: ksz: Add Microchip KSZ8795 DSA driver") Signed-off-by: Ben Hutchings --- drivers/net/dsa/microchip/ksz8795.c | 26 ++++++++++++++++++------- drivers/net/dsa/microchip/ksz8795_reg.h | 4 ++++ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index b0e2b844478a..95842f7b2f1b 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -1124,6 +1124,16 @@ static int ksz8_port_vlan_filtering(struct dsa_switch *ds, int port, bool flag, return 0; } +static void ksz8_port_enable_pvid(struct ksz_device *dev, int port, bool state) +{ + if (ksz_is_ksz88x3(dev)) { + ksz_cfg(dev, REG_SW_INSERT_SRC_PVID, + 0x03 << (4 - 2 * port), state); + } else { + ksz_pwrite8(dev, port, REG_PORT_CTRL_12, state ? 0x0f : 0x00); + } +} + static int ksz8_port_vlan_add(struct dsa_switch *ds, int port, const struct switchdev_obj_port_vlan *vlan, struct netlink_ext_ack *extack) @@ -1160,9 +1170,11 @@ static int ksz8_port_vlan_add(struct dsa_switch *ds, int port, u16 vid; ksz_pread16(dev, port, REG_PORT_CTRL_VID, &vid); - vid &= 0xfff; + vid &= ~VLAN_VID_MASK; vid |= new_pvid; ksz_pwrite16(dev, port, REG_PORT_CTRL_VID, vid); + + ksz8_port_enable_pvid(dev, port, true); } return 0; @@ -1173,7 +1185,7 @@ static int ksz8_port_vlan_del(struct dsa_switch *ds, int port, { bool untagged = vlan->flags & BRIDGE_VLAN_INFO_UNTAGGED; struct ksz_device *dev = ds->priv; - u16 data, pvid, new_pvid = 0; + u16 data, pvid; u8 fid, member, valid; if (ksz_is_ksz88x3(dev)) @@ -1195,14 +1207,11 @@ static int ksz8_port_vlan_del(struct dsa_switch *ds, int port, valid = 0; } - if (pvid == vlan->vid) - new_pvid = 1; - ksz8_to_vlan(dev, fid, member, valid, &data); ksz8_w_vlan_table(dev, vlan->vid, data); - if (new_pvid != pvid) - ksz_pwrite16(dev, port, REG_PORT_CTRL_VID, pvid); + if (pvid == vlan->vid) + ksz8_port_enable_pvid(dev, port, false); return 0; } @@ -1438,6 +1447,9 @@ static int ksz8_setup(struct dsa_switch *ds) ksz_cfg(dev, S_MIRROR_CTRL, SW_MIRROR_RX_TX, false); + if (!ksz_is_ksz88x3(dev)) + ksz_cfg(dev, REG_SW_CTRL_19, SW_INS_TAG_ENABLE, true); + /* set broadcast storm protection 10% rate */ regmap_update_bits(dev->regmap[1], S_REPLACE_VID_CTRL, BROADCAST_STORM_RATE, diff --git a/drivers/net/dsa/microchip/ksz8795_reg.h b/drivers/net/dsa/microchip/ksz8795_reg.h index a32355624f31..6b40bc25f7ff 100644 --- a/drivers/net/dsa/microchip/ksz8795_reg.h +++ b/drivers/net/dsa/microchip/ksz8795_reg.h @@ -631,6 +631,10 @@ #define REG_PORT_4_OUT_RATE_3 0xEE #define REG_PORT_5_OUT_RATE_3 0xFE +/* 88x3 specific */ + +#define REG_SW_INSERT_SRC_PVID 0xC2 + /* PME */ #define SW_PME_OUTPUT_ENABLE BIT(1) From patchwork Mon Aug 9 22:59:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Hutchings X-Patchwork-Id: 494214 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DDE45C4338F for ; Mon, 9 Aug 2021 22:59:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B875560FE3 for ; Mon, 9 Aug 2021 22:59:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236994AbhHIXAE (ORCPT ); Mon, 9 Aug 2021 19:00:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49440 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236982AbhHIXAC (ORCPT ); Mon, 9 Aug 2021 19:00:02 -0400 Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [IPv6:2a00:1450:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CF325C0613D3 for ; Mon, 9 Aug 2021 15:59:40 -0700 (PDT) Received: by mail-ed1-x52b.google.com with SMTP id n12so3261353edx.8 for ; Mon, 09 Aug 2021 15:59:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mind.be; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=MzJr0qbqsvMw55RyyIfqZjVAh0S51a48rx6Wiy6q1jc=; b=ASZB51Kw764JmFIkT8xeMKlV6w950pnSN5eZfS6ZGWXH6bRk/P/f1eS+4+zc1P8sJo P1TnwhIvL6H+xyDXMAIadhrTa3dJ9H02RJ8W9pdqeDnACAvlKemnM5IqeJ71OOrMbBQ+ cdd7LhkG2hn68iA3hK2MXfkrP/0z91c0o2b7XiQ6kfrm2+f2ZS7o9cCFKl56t6xvgIyz NxT6g+V8fghDRlk50qfpnpBbJlUKjzk6PTdsHVEoKRDCbL6lknFaodbyBG4XApUA3ID8 vQ4mukklJu+0HAcO5Xjr4fP51NiftK4BdYDzYqg7BcAOBKHTkG8Wap74+PLBA+FsZdej jpwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=MzJr0qbqsvMw55RyyIfqZjVAh0S51a48rx6Wiy6q1jc=; b=C2Ec9ct7H+eeIXcIrP1bFvyi6m6aCq8pPU5YsxSuAFBGHhUlJZL8+xY1Vcjwo4N7PI 3yhRoAfYWJh/B5YVEmSmkwLjQCKprtorCSl/DL2AubYxPnU4ylHcyEigPAmFIjpYEmd4 80AwIokokNqQgjFPB5WiggJyXcrMcilCgzbGsv00AnNbH7AWFtDZbhg90m5Fm+9ZR9L1 d3AipWEZbm+jgcIPqNXQqIrqxEtOXXhCyw18FT0rNxiNq1DwBe40wyfuEddepHzk9eru pdzBBxgbjurw1ccMhtAOrJL1dob6h98RVvlDglKoUYxRuJ4220+BJD2lSXV8YPdKgiae dtFg== X-Gm-Message-State: AOAM532/NY20+mymUocplCPuVL2WJEpKZnFMcGC1IlgOoFXzxn9AbgQ6 po8xdF6KFNkS3iyqyac6vpHlS07Wn3omfw== X-Google-Smtp-Source: ABdhPJxc4jSSmf9PrpRZxrxkRoexiFO15pz9nv8mIXM+kfqrgK4bVpuKwewgnm7p5uwRU/t7KWe78A== X-Received: by 2002:a05:6402:104b:: with SMTP id e11mr926156edu.62.1628549979431; Mon, 09 Aug 2021 15:59:39 -0700 (PDT) Received: from cephalopod (168.7-181-91.adsl-dyn.isp.belgacom.be. [91.181.7.168]) by smtp.gmail.com with ESMTPSA id n26sm8620495eds.63.2021.08.09.15.59.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Aug 2021 15:59:39 -0700 (PDT) Date: Tue, 10 Aug 2021 00:59:37 +0200 From: Ben Hutchings To: Woojung Huh , UNGLinuxDriver@microchip.com Cc: netdev@vger.kernel.org Subject: [PATCH net 3/7] net: dsa: microchip: ksz8795: Reject unsupported VLAN configuration Message-ID: <20210809225936.GD17207@cephalopod> References: <20210809225753.GA17207@cephalopod> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210809225753.GA17207@cephalopod> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The switches supported by ksz8795 only have a per-port flag for Tag Removal. This means it is not possible to support both tagged and untagged VLANs on the same port. Reject attempts to add a VLAN that requires the flag to be changed, unless there are no VLANs currently configured. VID 0 is excluded from this check since it is untagged regardless of the state of the flag. On the CPU port we could support tagged and untagged VLANs at the same time. This will be enabled by a later patch. Fixes: e66f840c08a2 ("net: dsa: ksz: Add Microchip KSZ8795 DSA driver") Signed-off-by: Ben Hutchings --- drivers/net/dsa/microchip/ksz8795.c | 27 +++++++++++++++++++++++++- drivers/net/dsa/microchip/ksz_common.h | 1 + 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index 95842f7b2f1b..045786f4e29e 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -1140,13 +1140,38 @@ static int ksz8_port_vlan_add(struct dsa_switch *ds, int port, { bool untagged = vlan->flags & BRIDGE_VLAN_INFO_UNTAGGED; struct ksz_device *dev = ds->priv; + struct ksz_port *p = &dev->ports[port]; u16 data, new_pvid = 0; u8 fid, member, valid; if (ksz_is_ksz88x3(dev)) return -ENOTSUPP; - ksz_port_cfg(dev, port, P_TAG_CTRL, PORT_REMOVE_TAG, untagged); + /* If a VLAN is added with untagged flag different from the + * port's Remove Tag flag, we need to change the latter. + * Ignore VID 0, which is always untagged. + */ + if (untagged != p->remove_tag && vlan->vid != 0) { + unsigned int vid; + + /* Reject attempts to add a VLAN that requires the + * Remove Tag flag to be changed, unless there are no + * other VLANs currently configured. + */ + for (vid = 1; vid < dev->num_vlans; ++vid) { + /* Skip the VID we are going to add or reconfigure */ + if (vid == vlan->vid) + continue; + + ksz8_from_vlan(dev, dev->vlan_cache[vid].table[0], + &fid, &member, &valid); + if (valid && (member & BIT(port))) + return -EINVAL; + } + + ksz_port_cfg(dev, port, P_TAG_CTRL, PORT_REMOVE_TAG, untagged); + p->remove_tag = untagged; + } ksz8_r_vlan_table(dev, vlan->vid, &data); ksz8_from_vlan(dev, data, &fid, &member, &valid); diff --git a/drivers/net/dsa/microchip/ksz_common.h b/drivers/net/dsa/microchip/ksz_common.h index 6afbb41ad39e..1597c63988b4 100644 --- a/drivers/net/dsa/microchip/ksz_common.h +++ b/drivers/net/dsa/microchip/ksz_common.h @@ -27,6 +27,7 @@ struct ksz_port_mib { struct ksz_port { u16 member; u16 vid_member; + bool remove_tag; /* Remove Tag flag set, for ksz8795 only */ int stp_state; struct phy_device phydev; From patchwork Mon Aug 9 22:59:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Hutchings X-Patchwork-Id: 494835 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 816CEC4338F for ; Mon, 9 Aug 2021 22:59:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6505160FE3 for ; Mon, 9 Aug 2021 22:59:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236991AbhHIXAM (ORCPT ); Mon, 9 Aug 2021 19:00:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49496 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232816AbhHIXAL (ORCPT ); Mon, 9 Aug 2021 19:00:11 -0400 Received: from mail-ej1-x62b.google.com (mail-ej1-x62b.google.com [IPv6:2a00:1450:4864:20::62b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C2BDFC0613D3 for ; Mon, 9 Aug 2021 15:59:50 -0700 (PDT) Received: by mail-ej1-x62b.google.com with SMTP id oz16so15625219ejc.7 for ; Mon, 09 Aug 2021 15:59:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mind.be; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=8Qn4J43lMwsjtvWH8gyR3VB/gVX9syUDRFP38FtmuwU=; b=KRSrQxyMgaxBwf+uUwXbhlcZhTRXInkIqWYzWqJBf1pc3OsCtCaLcN43KmN/AW5zPg 4/uQs2vm4S/IcglCSllIpKfURRKiZqnboEgi6QJVaR90qje7I/c5gXOQtehug1O+W7Zt haEJJ0JNzBQWTPxC0lIzTjNCzZeVFCmG+dTL7n2b5XiT65TzJvuUPUO9o/vqAB5nJHuP EbhOfhsqOr+CevG0XP+JbpGCeY/OzFdz0ZXLJ/nR2zR2AIw/CBMosbVFq0LpFuFewsVo 0qiXxE93svJ/+UDKLNfAe2uoJzgkucgAMKyCgaQXxvYjUsae+1RIJ4ZclSNKMwWOH82W NNoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=8Qn4J43lMwsjtvWH8gyR3VB/gVX9syUDRFP38FtmuwU=; b=EhUC+3E7pqMryC4pWXMb2tgxfxUj8MHZv2Rv5SEvreZs7juoBGzKBpsFnw+3ipI5DT UxKr5QEaK06aerB4EdU2+/vl3Rw33lEnBDsL4GgP5ZMDqblok6UWoJd3MqQGYfHxPHMk N2sgEh4bJ9yWzBcgsSeFsT7ZcUu3bQgDPY77aBlcXsviM1uBFNEr7UBBFAvvNajcL4dD QzZ09CCZk+i1Ya000xdQGAQDCJ0zAXuSFSsozZsch7VZPxk4TZM7LM7mN3XRJWZr9R8X dbui0CFN0lP1TmsKRD1kG1YK4dASMoAN2ORdUsI4K4F3RNSqExuWviZzxne3YYUOsMFm mphQ== X-Gm-Message-State: AOAM5315PIJHT3Fop2a/cYHls2viHb8F3afMG/x5VrjiwwbQdkkmfjZw LkYDXBJagqeFndOcYwPajucYebDHK9A/pw== X-Google-Smtp-Source: ABdhPJy8ConIC0KTbI1KPmX4Vj+MTTXNrXsTkRUNGaKnPIr/7SJlULUaM9v98Jinl91HiKAzQzU39g== X-Received: by 2002:a17:906:31cf:: with SMTP id f15mr25154307ejf.272.1628549989385; Mon, 09 Aug 2021 15:59:49 -0700 (PDT) Received: from cephalopod (168.7-181-91.adsl-dyn.isp.belgacom.be. [91.181.7.168]) by smtp.gmail.com with ESMTPSA id z70sm4389270ede.76.2021.08.09.15.59.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Aug 2021 15:59:49 -0700 (PDT) Date: Tue, 10 Aug 2021 00:59:47 +0200 From: Ben Hutchings To: Woojung Huh , UNGLinuxDriver@microchip.com Cc: netdev@vger.kernel.org Subject: [PATCH net 4/7] net: dsa: microchip: ksz8795: Fix VLAN untagged flag change on deletion Message-ID: <20210809225946.GE17207@cephalopod> References: <20210809225753.GA17207@cephalopod> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210809225753.GA17207@cephalopod> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When a VLAN is deleted from a port, the flags in struct switchdev_obj_port_vlan are always 0. ksz8_port_vlan_del() copies the BRIDGE_VLAN_INFO_UNTAGGED flag to the port's Tag Removal flag, and therefore always clears it. In case there are multiple VLANs configured as untagged on this port - which seems useless, but is allowed - deleting one of them changes the remaining VLANs to be tagged. It's only ever necessary to change this flag when a VLAN is added to the port, so leave it unchanged in ksz8_port_vlan_del(). Fixes: e66f840c08a2 ("net: dsa: ksz: Add Microchip KSZ8795 DSA driver") Signed-off-by: Ben Hutchings --- drivers/net/dsa/microchip/ksz8795.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index 045786f4e29e..7a3d0d137ed1 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -1208,7 +1208,6 @@ static int ksz8_port_vlan_add(struct dsa_switch *ds, int port, static int ksz8_port_vlan_del(struct dsa_switch *ds, int port, const struct switchdev_obj_port_vlan *vlan) { - bool untagged = vlan->flags & BRIDGE_VLAN_INFO_UNTAGGED; struct ksz_device *dev = ds->priv; u16 data, pvid; u8 fid, member, valid; @@ -1219,8 +1218,6 @@ static int ksz8_port_vlan_del(struct dsa_switch *ds, int port, ksz_pread16(dev, port, REG_PORT_CTRL_VID, &pvid); pvid = pvid & 0xFFF; - ksz_port_cfg(dev, port, P_TAG_CTRL, PORT_REMOVE_TAG, untagged); - ksz8_r_vlan_table(dev, vlan->vid, &data); ksz8_from_vlan(dev, data, &fid, &member, &valid); From patchwork Mon Aug 9 22:59:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Hutchings X-Patchwork-Id: 494213 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 098B5C4338F for ; Mon, 9 Aug 2021 23:00:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D2E5160FE3 for ; Mon, 9 Aug 2021 23:00:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236997AbhHIXAY (ORCPT ); Mon, 9 Aug 2021 19:00:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234974AbhHIXAV (ORCPT ); Mon, 9 Aug 2021 19:00:21 -0400 Received: from mail-ed1-x52e.google.com (mail-ed1-x52e.google.com [IPv6:2a00:1450:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 90F3DC0613D3 for ; Mon, 9 Aug 2021 16:00:00 -0700 (PDT) Received: by mail-ed1-x52e.google.com with SMTP id d6so27092576edt.7 for ; Mon, 09 Aug 2021 16:00:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mind.be; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=ZFAFMdmrH+/a1aLUISnFDqOH+TO/ApDMconZApETk6Q=; b=dXrFg+RoTGioZPjnME/xLm2aa/RVg7f16c8IO7/2HN+NRKK/u49qW0XDZU8yd8KSWi mqkHYZKgUIXQWFyojAvCsueOIZuqRT38MDvnb0i6jKgTE1Q/SdI+jt+DUHO8+B5yaaZO 3nvQECOohNzmM/VfIlDV5A4t1ugYysuBb/QBgbvaGIk/Y8CMh3L9a9sXdjXPqPqhTgMv 3YeNv6iiVJBRxAH9whHklaU68Ue2JnsZ65s0YdumdGQkuTJVlsstcc+dOhfMMCnoL/6q /et7FezuTXUz83JYNMY/7zqXwLfw/tlPzH5I/TvT/MVVrkaG/YZHTGtGF3+f/r6KxPlG ztyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=ZFAFMdmrH+/a1aLUISnFDqOH+TO/ApDMconZApETk6Q=; b=BcencARKjFfgSLE5cJispns59WGDagyMO9/2ak1vf3BwYAWGc9QXgewz6VDkWDFyA+ 4NP3OVKuyXA5/3gsjuEyPwOZ7oQO2yzMggb/usqcHcoM1xI5+wLMNF7FxGWhIwdEFWBl 6RINjBgr0qdnJAN+4TQTPSDJ0EthEZckdegjlfaZWVuxwuWbawoUtlCBLvVghzvxUZee dn2O7ID30SBoY82ZWkXBqLc4XnFl9L1dWKK2MIXOTvsHBPqaqjpQhrPHmbdZceabExmY HNip2eB6STgcKa+JJUdb3vEP5ljwLlhS0ygvcowVgXcbSBvx7409/P+ptWj/2WCOqnUO vAuA== X-Gm-Message-State: AOAM533OLGUc5bFwwXLfYjvpbcKd/djBrhdp6XX6Voc+2ET+5DvdeUc+ IDVlzVERKSzG7xXWq9cVzOzdMg== X-Google-Smtp-Source: ABdhPJwr87XKrKk89bByeJnP9Fkt5bt/LR7yUfkeGUXUSMWDlr3KW1W4jN4uinAdUudaoXa55gqClQ== X-Received: by 2002:a05:6402:361:: with SMTP id s1mr893442edw.172.1628549999249; Mon, 09 Aug 2021 15:59:59 -0700 (PDT) Received: from cephalopod (168.7-181-91.adsl-dyn.isp.belgacom.be. [91.181.7.168]) by smtp.gmail.com with ESMTPSA id j5sm8616086edv.10.2021.08.09.15.59.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Aug 2021 15:59:58 -0700 (PDT) Date: Tue, 10 Aug 2021 00:59:57 +0200 From: Ben Hutchings To: Woojung Huh , UNGLinuxDriver@microchip.com Cc: netdev@vger.kernel.org Subject: [PATCH net 5/7] net: dsa: microchip: ksz8795: Use software untagging on CPU port Message-ID: <20210809225956.GF17207@cephalopod> References: <20210809225753.GA17207@cephalopod> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210809225753.GA17207@cephalopod> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On the CPU port, we can support both tagged and untagged VLANs at the same time by doing any necessary untagging in software rather than hardware. To enable that, keep the CPU port's Remove Tag flag cleared and set the dsa_switch::untag_bridge_pvid flag. Fixes: e66f840c08a2 ("net: dsa: ksz: Add Microchip KSZ8795 DSA driver") Signed-off-by: Ben Hutchings --- drivers/net/dsa/microchip/ksz8795.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index 7a3d0d137ed1..ddfe9cd6b7bd 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -1150,8 +1150,10 @@ static int ksz8_port_vlan_add(struct dsa_switch *ds, int port, /* If a VLAN is added with untagged flag different from the * port's Remove Tag flag, we need to change the latter. * Ignore VID 0, which is always untagged. + * Ignore CPU port, which will always be tagged. */ - if (untagged != p->remove_tag && vlan->vid != 0) { + if (untagged != p->remove_tag && vlan->vid != 0 && + port != dev->cpu_port) { unsigned int vid; /* Reject attempts to add a VLAN that requires the @@ -1767,6 +1769,11 @@ static int ksz8_switch_init(struct ksz_device *dev) /* set the real number of ports */ dev->ds->num_ports = dev->port_cnt; + /* We rely on software untagging on the CPU port, so that we + * can support both tagged and untagged VLANs + */ + dev->ds->untag_bridge_pvid = true; + return 0; } From patchwork Mon Aug 9 23:00:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Hutchings X-Patchwork-Id: 494834 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 38911C4338F for ; Mon, 9 Aug 2021 23:00:14 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 14EE460FE3 for ; Mon, 9 Aug 2021 23:00:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236999AbhHIXAe (ORCPT ); Mon, 9 Aug 2021 19:00:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235623AbhHIXAa (ORCPT ); Mon, 9 Aug 2021 19:00:30 -0400 Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B1CF3C0613D3 for ; Mon, 9 Aug 2021 16:00:09 -0700 (PDT) Received: by mail-ed1-x531.google.com with SMTP id k9so9841117edr.10 for ; Mon, 09 Aug 2021 16:00:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mind.be; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=NOh/1O8Aw6ygmV6lKbU6J3+Rn+aV91ycDEv4lb7aQdc=; b=EGDPRyp6I3GogJ7QpXQYc8Rn7zYcFiUDCoVgiFpWDEgjd41dsrmJWQeeUgi54tVTmY D/QO9UuUMKh8tRXix+CjM12bcgHbNR+bOPLHrqY0OUY3suOuTqkqpzUGeuBM9W4zcsYZ 9XWPMJKYV58XvdOJBkOzfpNIAaCr1Ma9J7ndUP4xp0tOdx8N/pZcf7ncu9dZprG2L0H5 gcSZNh4aFAcihDNV/37FJvAPW16MqO8PDdVS5amUp4VEhDir+z75bgKYfc3YOvLa0zqQ F7JfkFjrwl4ufDM7sshKWwTh7Z/J55APsrtq4sk4q9bzq5h5/kfBExcW1r4LoTuzrIuO Aqvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=NOh/1O8Aw6ygmV6lKbU6J3+Rn+aV91ycDEv4lb7aQdc=; b=rwL5Ii6wLs6ObEtVXvQEM2M1dVMy3XkAOB0OtpctQjKE93Uwwwl6Dpb+yfNTL/zuKd E1Pz8EseOZ8wUxmaHEGETJnBlOW1TPSOjMxDuh0BHoCZXvcFz1qVPsNR+asRMAjMtwKZ Faz66M2OSGcgjgtZp/hF7/NoQ3EIGO5mfPqu0ySK19ttPzApHttp/nN23RjkmGVWa9ER gZ643BBwie8Jt5ISYof3A11Uy3I98VLowvPfnlv3CUaArToNXPm2wUJRmsa6DZg/o0pF aortNjDuCIleSk5s889FZrmLKhwsS35sfI6Rl37BbG3MQ81mWjnPDuWPc7bBQvxX+UxF wmZA== X-Gm-Message-State: AOAM531svvJJVaT8eS8fNcHUWjjfHDbk8rhxcjK/isgmg2x9BxOHhAA1 Rfqz+guwygW0xLaGzkkfaHqKwg== X-Google-Smtp-Source: ABdhPJwNALmc/GIkgBUSutVXWqGrCqshy32UNwMnKDwvItSwGtP3eSRdlcR6RtxAdey5d19FrBPssQ== X-Received: by 2002:aa7:d593:: with SMTP id r19mr869345edq.372.1628550008337; Mon, 09 Aug 2021 16:00:08 -0700 (PDT) Received: from cephalopod (168.7-181-91.adsl-dyn.isp.belgacom.be. [91.181.7.168]) by smtp.gmail.com with ESMTPSA id g10sm6250280ejj.44.2021.08.09.16.00.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Aug 2021 16:00:08 -0700 (PDT) Date: Tue, 10 Aug 2021 01:00:06 +0200 From: Ben Hutchings To: Woojung Huh , UNGLinuxDriver@microchip.com Cc: netdev@vger.kernel.org Subject: [PATCH net 6/7] net: dsa: microchip: ksz8795: Fix VLAN filtering Message-ID: <20210809230005.GG17207@cephalopod> References: <20210809225753.GA17207@cephalopod> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210809225753.GA17207@cephalopod> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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 --- 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 ddfe9cd6b7bd..891eaeb62ad0 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -1119,8 +1119,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; } @@ -1774,6 +1780,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; } From patchwork Mon Aug 9 23:00:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Hutchings X-Patchwork-Id: 494212 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4AACC4338F for ; Mon, 9 Aug 2021 23:00:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9AA6360FE3 for ; Mon, 9 Aug 2021 23:00:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237005AbhHIXAk (ORCPT ); Mon, 9 Aug 2021 19:00:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49638 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237001AbhHIXAk (ORCPT ); Mon, 9 Aug 2021 19:00:40 -0400 Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com [IPv6:2a00:1450:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DDF09C0613D3 for ; Mon, 9 Aug 2021 16:00:18 -0700 (PDT) Received: by mail-ej1-x629.google.com with SMTP id b15so7690688ejg.10 for ; Mon, 09 Aug 2021 16:00:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mind.be; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=R/UdCYZCVR4mjo6B5/QmX6kXXoyFbU1YPunfol2qSgA=; b=OF/OYnn6/YR6r77VKmCIq84XLu5DNMhZFxv/LFbDRo07PooME9/85XZU4+5ee+Ht40 ICKuMPyOocuGgpKaKYp1U7rPZTjgn00u6SuEFq1xZab8ADDD6jS+Df4Wov8vQ8j38gv/ dI6y2GS/EtJeWR39m0sg/eApUef3RgN23R++xAy/koU9s2F73hy9ascv8vljRBT8Sz78 R6axkZwHjGrAaCxdTeU7gKN7LbQtGnkg8Rt4Zkwxhb36YzZCSxliPC8bJuNW1QjB18Eo mq3A9ayao671W7SFJuFLHQOWKE8ticSsDya3b27QTlDh18397xNMgP8lMy782Q2oeuP6 VtGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=R/UdCYZCVR4mjo6B5/QmX6kXXoyFbU1YPunfol2qSgA=; b=ZqaXO79hQygXmUIV/WPl2/fl8yyb2SaKHpGsYPiVRZ7Ob4YZQ6oFmrTjxPE6EDUGpg gnjlPkEY3aVE5/WnG/0b+Q2ctOJHm+ThgGnR+3y8vNmWzJafhDBbyEVrbjMVuI6gaWRL r6kn8b8eidvazkeBguAIZ5ozEyH0utZTawhY0i+wGLspEA5RA3qByY1aCPmqLlkerUhH /+q9Q+yljC4wFY7xEMYIGcrUQjkC00zhuqe8CifkS1dlupVT53aGMkRHgvx8y76fynOJ i+ApOlIto0P5FZDFv3daR4tnm6keKBkb/D1vNIYV4FM6bpUBQDW6XshhSGx0oG1ie5su Fl8g== X-Gm-Message-State: AOAM532ZWWjMokMoDH8Z+MdMwYBp3IrgwAmnQCC1ZOfkLwQ4ICK8SMON dbt71+zQbQMTZFaVGgJeXwAVVw== X-Google-Smtp-Source: ABdhPJwUrJQOW+b0EdhOT4z2/x0+wptC+QwasZq4CQz0v8qOMZD2V4APihRg5ya3hVYiZCTA2XXJTA== X-Received: by 2002:a17:906:1299:: with SMTP id k25mr24663178ejb.139.1628550017546; Mon, 09 Aug 2021 16:00:17 -0700 (PDT) Received: from cephalopod (168.7-181-91.adsl-dyn.isp.belgacom.be. [91.181.7.168]) by smtp.gmail.com with ESMTPSA id y23sm6283778ejp.115.2021.08.09.16.00.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Aug 2021 16:00:17 -0700 (PDT) Date: Tue, 10 Aug 2021 01:00:15 +0200 From: Ben Hutchings To: Woojung Huh , UNGLinuxDriver@microchip.com Cc: netdev@vger.kernel.org Subject: [PATCH net 7/7] net: dsa: microchip: ksz8795: Don't use phy_port_cnt in VLAN table lookup Message-ID: <20210809230014.GH17207@cephalopod> References: <20210809225753.GA17207@cephalopod> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20210809225753.GA17207@cephalopod> User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The magic number 4 in VLAN table lookup was the number of entries we can read and write at once. Using phy_port_cnt here doesn't make sense and presumably broke VLAN filtering for 3-port switches. Change it back to 4. Fixes: 4ce2a984abd8 ("net: dsa: microchip: ksz8795: use phy_port_cnt ...") Signed-off-by: Ben Hutchings --- drivers/net/dsa/microchip/ksz8795.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/dsa/microchip/ksz8795.c b/drivers/net/dsa/microchip/ksz8795.c index 891eaeb62ad0..4a6a3838418f 100644 --- a/drivers/net/dsa/microchip/ksz8795.c +++ b/drivers/net/dsa/microchip/ksz8795.c @@ -687,8 +687,8 @@ static void ksz8_r_vlan_entries(struct ksz_device *dev, u16 addr) shifts = ksz8->shifts; ksz8_r_table(dev, TABLE_VLAN, addr, &data); - addr *= dev->phy_port_cnt; - for (i = 0; i < dev->phy_port_cnt; i++) { + addr *= 4; + for (i = 0; i < 4; i++) { dev->vlan_cache[addr + i].table[0] = (u16)data; data >>= shifts[VLAN_TABLE]; } @@ -702,7 +702,7 @@ static void ksz8_r_vlan_table(struct ksz_device *dev, u16 vid, u16 *vlan) u64 buf; data = (u16 *)&buf; - addr = vid / dev->phy_port_cnt; + addr = vid / 4; index = vid & 3; ksz8_r_table(dev, TABLE_VLAN, addr, &buf); *vlan = data[index]; @@ -716,7 +716,7 @@ static void ksz8_w_vlan_table(struct ksz_device *dev, u16 vid, u16 vlan) u64 buf; data = (u16 *)&buf; - addr = vid / dev->phy_port_cnt; + addr = vid / 4; index = vid & 3; ksz8_r_table(dev, TABLE_VLAN, addr, &buf); data[index] = vlan;