From nobody Sun Feb 8 06:04:34 2026 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A503E262813; Tue, 29 Apr 2025 20:17:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957853; cv=none; b=D5e7Knq81IDU7YqmyCNEdSujEiPQdkwK38HGae2a8objOshlmGcwZAuL/Rua0KZoZFZOx7Yx/gh/3Wr2SUvV41TpzCGY+PV4thUu1MzsXwarSXATj5j4eqYBq35qBwnxunx8pwEu9quHkPptURL0Usf+o4+J3u8cun3zpvvaoAI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957853; c=relaxed/simple; bh=nDXJMRI8RRGWu/sT7bwwt2Ds1ltVyY2w1KlKeqFxM3g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VvJllRTu0/6aT/BqOoQuC79e/LnPw3NieELjxiiq7+R3s82CR64U0lbXntBO3NOaRdFndDh1NDq2Fs6wduy0C7IJHYpnHGjfVHsWUMqIXAYNECbxnpx1Wt8pF38ew3g4I3HGRETpEXjOAGxT/H4jPUcfGI5GgT+V3DG9WxQtQqA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=DDtx6dYH; arc=none smtp.client-ip=209.85.167.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DDtx6dYH" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-54af20849adso221586e87.1; Tue, 29 Apr 2025 13:17:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745957850; x=1746562650; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NvC51MQbZRhHiX+q/EfkjiAsnNDHuxTQtXPBubp72ME=; b=DDtx6dYHC0U9tp5jUUr+PEO8sf8QQAtCjGDUsSlxxU0S3oCtD9Fm8S6tCLjBsuMUV4 7kS3WWc41HUcmSkyIfFT0YyxKCecTHUJVUKyjPLou8iE+DK5RSGto//PcFQd6+aGGYKB hbV68tAeUorViEnIU7BNRLPi/ob7Mc7zn/0RHlYOQli1vXQWTMD9RUGR0g8T+XKxwPE9 hvuYVivhCJe/UqX1tcRxMoPAQ271KezoRIDa9ivEeyyfWBA62+WKC6/1mHQ7KPLL6tdO UEyBbBu4G+GwW/eWa1w4+D1/Z0IAHPMJQkCT4BWW/eEEYCTFQ85wWEGGyPVEa+cq2r9Q gF8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745957850; x=1746562650; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NvC51MQbZRhHiX+q/EfkjiAsnNDHuxTQtXPBubp72ME=; b=RbeD9I/Ryj67yzOH+F0h2K6+v+hKnV/nrhzcwfKUPOLgKwOpMAqtVngGihVPP62hcA y4WdFR8cDkD1XAaqtyeO0cEcSNDAKsLqKJUd8BFsLeNbMFqPBAkHUU9Irx+wOmxBHcIO u5R+umccSb1BiFVnNBfbE6gVdXO4PZP7Bgm9eHSIt9PlJ89VtyFSSueP8CIfo70nojtG NXJNzbsOGY7CXugF0YNWuHl2mYcJjOeTQz2USYNNzPsZJy+OETcADaPL6AaL7SL64hib 0gr7U0tvVI4ip+x3gCIMvIsU/5uo/R7vNfFLQMReDY/MUbiysdCNqUGxTwA4Uc8OnaCP /kIA== X-Forwarded-Encrypted: i=1; AJvYcCUqIpuvGnaKSvZT9Xbjjwt8rgbDtoJBLD+aoN5Lowx+WWYlCC7NZ1gPoxGET7/c5TCFBSvf9vr3Ol9aniM=@vger.kernel.org, AJvYcCWmDeUT2n+Rur1BT5YQjePpIqXxiHCzJmNXzyYkE8RNT4JftTX8qMwnJz0Dfo94EeXY1C81mg98@vger.kernel.org X-Gm-Message-State: AOJu0YxkMUc4Y3T6MLIJDXHqR2ObVPK3CeBShQJsNWiM2vwpFr49xBXd HkssR7BAQgPOk+bpvZQXokZwhgIh8wQuzmOgvLbzw643KSih72Oy X-Gm-Gg: ASbGnctx3BIYpJNhux3SCrcjLTUnujKKKs8D8wU/FBpEls+ahzf7GVo5Ofu+pLzF9M3 lCGjHBwe7w8eLCAUTqX+YvYLInXqA+Bicny81swtB6cmeNB0GumtQptJ8DMHWIYBNmivnh+p2zs j3Z+95BEdXT3u057BM68eJ7JT5/7ItkVucKz5MEOqouSd8gNbD8mBPdWzBhy890hmiTP31nf7Cz 8N8CQjuqaH7vnZWUZXq+Yo5PdTdt5WDgd3QNWyo2+VfEo3LDAMva9pXVOv8NPkyrQpEQ2R9JQAe i4YWvnNwBPYk7qY/Qd7VIPT3U2LVSQrY3kC9MYOMOFa53dU5Z37VloVspCn8wVX+mtYywTol1KQ wMA7VDDlZmDTnZdNPeyg= X-Google-Smtp-Source: AGHT+IHIFuMg7jyYSGFsgMUD8LxKFxpwMNtRJOSrhtWUD8EnDztxeTKPlXhm8J16TdWRJem+yP+ADw== X-Received: by 2002:a05:6512:2206:b0:549:94c4:9f01 with SMTP id 2adb3069b0e04-54ea37d22cbmr80804e87.6.1745957849339; Tue, 29 Apr 2025 13:17:29 -0700 (PDT) Received: from localhost (dslb-002-205-023-067.002.205.pools.vodafone-ip.de. [2.205.23.67]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5f703831b5csm7863022a12.65.2025.04.29.13.17.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 13:17:27 -0700 (PDT) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Kurt Kanzenbach Cc: Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net 01/11] net: dsa: b53: allow leaky reserved multicast Date: Tue, 29 Apr 2025 22:17:00 +0200 Message-ID: <20250429201710.330937-2-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250429201710.330937-1-jonas.gorski@gmail.com> References: <20250429201710.330937-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Allow reserved multicast to ignore VLAN membership so STP and other management protocols work without a PVID VLAN configured when using a vlan aware bridge. Fixes: 967dd82ffc52 ("net: dsa: b53: Add support for Broadcom RoboSwitch") Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli Tested-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index e5ba71897906..62866165ad03 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -373,9 +373,11 @@ static void b53_enable_vlan(struct b53_device *dev, in= t port, bool enable, b53_read8(dev, B53_VLAN_PAGE, B53_VLAN_CTRL5, &vc5); } =20 + vc1 &=3D ~VC1_RX_MCST_FWD_EN; + if (enable) { vc0 |=3D VC0_VLAN_EN | VC0_VID_CHK_EN | VC0_VID_HASH_VID; - vc1 |=3D VC1_RX_MCST_UNTAG_EN | VC1_RX_MCST_FWD_EN; + vc1 |=3D VC1_RX_MCST_UNTAG_EN; vc4 &=3D ~VC4_ING_VID_CHECK_MASK; if (enable_filtering) { vc4 |=3D VC4_ING_VID_VIO_DROP << VC4_ING_VID_CHECK_S; @@ -393,7 +395,7 @@ static void b53_enable_vlan(struct b53_device *dev, int= port, bool enable, =20 } else { vc0 &=3D ~(VC0_VLAN_EN | VC0_VID_CHK_EN | VC0_VID_HASH_VID); - vc1 &=3D ~(VC1_RX_MCST_UNTAG_EN | VC1_RX_MCST_FWD_EN); + vc1 &=3D ~VC1_RX_MCST_UNTAG_EN; vc4 &=3D ~VC4_ING_VID_CHECK_MASK; vc5 &=3D ~VC5_DROP_VTABLE_MISS; =20 --=20 2.43.0 From nobody Sun Feb 8 06:04:34 2026 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7879F263F30; Tue, 29 Apr 2025 20:17:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957854; cv=none; b=BlgrP+7K0YGT9XwI5Bi1vj99fMGJKljSgDcn16j3/a5u02sqxlr8dcMdK9sbYDv9kZAc5mwApbn2R1T2bc821BMqvvZAH/YpTHVE1FoMz3hJ0pqGvz16h+qxCGKMu8XKBE/hrXE8PZCp+cYDLgcQYq9BbyNWsOSKO+fgD1YVt78= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957854; c=relaxed/simple; bh=VPHjNFmaazifb+K6wHzWOxmAQtWD4cFqQPpv0T7UAro=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=e24YG4WytLzEftRxwjTKoKw8r6Gx+k6DjRCk78cuIz3ZaoJsdMj7bRPeEQQ6XRhWPa08MtirXrujB306i1qacy2NbEX+cueWQpA7K3WQI5YvXnvBdkZOSDG7HXj4q7ajExZaZ5ZWbfkHhKO1Y6SUZAfnUcgnjevpcUKUUlaywdU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=YdipxO7w; arc=none smtp.client-ip=209.85.218.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YdipxO7w" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-ac2ab99e16eso1402800166b.0; Tue, 29 Apr 2025 13:17:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745957851; x=1746562651; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tI5IVVmmMWscuzX6mqYN0L5taOLHq280xXdP7NoKx4w=; b=YdipxO7wwXsjfHVOhpnGWzVLCHwExjp54X/jekBoTtK4b3JWtu1sfKA986HjCuOYN4 dJfnAWfqagOxniC6wgO8CvfpndvCDzeo7Atfhr6BSamasnNQ7utjzaJoJuhU/KoJGc6V giqwzw62EhueRV2eUDz5LwncpPm60JhPBNBVxtpcQA7Z7/gMaefNm444e1ka6rfoPBbU OxvfAIhRcR3FYH8f90bZ7lNDSJqi+RKp3Hb0Ey3E69IBvVINlGv8uYnP8WznwpW4Fb2V yyJeGGCqow6SUKcBubCwFV2a/rSjabi3uOoKoU8hvJaJ5Bk8929TxFsADV2ecoB1DkwA STeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745957851; x=1746562651; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tI5IVVmmMWscuzX6mqYN0L5taOLHq280xXdP7NoKx4w=; b=nDojN/IVg5uILp5Rou9a+PqP49k7S64r55j4HWEM2/jlxmE6552rMI8dXWMwmi9uwI BOFQ+NNstdk9847WFBbs7uo80Tpfmd9pTOYL8CK4YKNRUiTZ1E+Nj4F6ZPs/CFd3lPoA JFwyu8Ok+1iBc3iuPhYWRFe/YA3cK8rliouPMaA8rNJLIgmYaw20nwGjMJ965Wm1JwqH GAN1VI9CR4gy+fV+Bluu25GkM+FcBIcJizVtXLG4HfuIFp528MJLX71BdwEixXANtsC6 7psvHo3EYjDEU3Wfr3L8rC0/o3lcpMWRbO7Xn3tgejFLE6VsHKNM7j/V4PR3HCIjbnHB 4oTQ== X-Forwarded-Encrypted: i=1; AJvYcCUj5WNZ9FskJ3kDz1qV/7wtuGZNdYtqqY4eIap8EgcfkNQqnmqKV68JIYdoeO069njLfS7oePdm@vger.kernel.org, AJvYcCXPeAqT/4NHRpbKIuO4Dr2OuJPGuwUTe1bh5lqRxdsNC7WfPZbLvFu4JrwTS2wMoGIPqh+l/sNg9WNeKik=@vger.kernel.org X-Gm-Message-State: AOJu0YxMXBk7fxmtDT1h10JZhCmobnBKG8sScdZ79eaeT922UDDxRTgK 8W1MWdxLzb1bzrSvovRkHrsW2VgoffO+rxjd49E0a31yOUBqzWAE X-Gm-Gg: ASbGncs3pqw6RRloSu/cMAQERHrA1VEdghBqKLU4rvcDV1RRX5d5aiSIwECSUb4Zu3f tZNvFG1yq3ThboGvp+LC4kugueh1z74WA1Dwd7dnAu692BfP4fTJ4qTiFrgLsuqBmXx+MPajQpI VnCCAvki+Z/3ik2jwVqfiywaEsl7jS+lQZ5Y6tdkW9eEkOlRmd59vozYnU7G0pnawoaQvEorxl5 m/U59KQ0AZmtO/ElWtNjSYcuxt7wehFmfFSdo6HM7zTLqzVpa7JrjLGha5M+SAhU88ka/J1AVDV j1T8d7T2oxjjTnHPNaBq3JGuru0jJcPxDZHtEATh+UjX+Wl9s1/jKa8QH5VcgYzeLCic/ZX1bKK 3IsVKzaLR6quBUBVumOM= X-Google-Smtp-Source: AGHT+IHnd+ayfnOME7pGWyrc+45sfFNXyd6LeRpU4Hei6WSpO5/z7+NbUYnxSoFUbSe6KH3aCc1pvw== X-Received: by 2002:a17:907:3e05:b0:ac7:322d:779c with SMTP id a640c23a62f3a-acedc793324mr63478566b.50.1745957850521; Tue, 29 Apr 2025 13:17:30 -0700 (PDT) Received: from localhost (dslb-002-205-023-067.002.205.pools.vodafone-ip.de. [2.205.23.67]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ace6ecf8603sm819056066b.112.2025.04.29.13.17.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 13:17:30 -0700 (PDT) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Kurt Kanzenbach Cc: Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net 02/11] net: dsa: b53: keep CPU port always tagged again Date: Tue, 29 Apr 2025 22:17:01 +0200 Message-ID: <20250429201710.330937-3-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250429201710.330937-1-jonas.gorski@gmail.com> References: <20250429201710.330937-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The Broadcom management header does not carry the original VLAN tag state information, just the ingress port, so for untagged frames we do not know from which VLAN they originated. Therefore keep the CPU port always tagged except for VLAN 0. Fixes the following setup: $ ip link add br0 type bridge vlan_filtering 1 $ ip link set sw1p1 master br0 $ bridge vlan add dev br0 pvid untagged self $ ip link add sw1p2.10 link sw1p2 type vlan id 10 Where VID 10 would stay untagged on the CPU port. Fixes: 2c32a3d3c233 ("net: dsa: b53: Do not force CPU to be always tagged") Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli Tested-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index 62866165ad03..9d4fb54b4ced 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1135,6 +1135,11 @@ static int b53_setup(struct dsa_switch *ds) */ ds->untag_bridge_pvid =3D dev->tag_protocol =3D=3D DSA_TAG_PROTO_NONE; =20 + /* The switch does not tell us the original VLAN for untagged + * packets, so keep the CPU port always tagged. + */ + ds->untag_vlan_aware_bridge_pvid =3D true; + ret =3D b53_reset_switch(dev); if (ret) { dev_err(ds->dev, "failed to reset switch\n"); @@ -1545,6 +1550,9 @@ int b53_vlan_add(struct dsa_switch *ds, int port, if (vlan->vid =3D=3D 0 && vlan->vid =3D=3D b53_default_pvid(dev)) untagged =3D true; =20 + if (vlan->vid > 0 && dsa_is_cpu_port(ds, port)) + untagged =3D false; + vl->members |=3D BIT(port); if (untagged && !b53_vlan_port_needs_forced_tagged(ds, port)) vl->untag |=3D BIT(port); --=20 2.43.0 From nobody Sun Feb 8 06:04:34 2026 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7184C2686AA; Tue, 29 Apr 2025 20:17:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957856; cv=none; b=cokSsGt7eArEVpxOINDr2zvnItw1Ztmc17/n2JOiI/iJzuf7SvesQPbv0MFA0+ejLVyjH5Zuxkvx15WWoVpDUFoJjuCmfqCytbAz5+ci3QLVgY24OAtiESIc77Iy7Jr52C5TIYU9P8uSIgrev2HfhhZ6vdgDpMXI9kTBWxCsxks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957856; c=relaxed/simple; bh=T0lI2VUmB5CEpO5S7puFi43w7Vie3rHaG4awpQE3pPM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fVnu51CGGjBYgCFlgv86b7tPyW+D/lJtRktUFHkX2dlYh7tP464pVBnkvBhG4M599sqGN6Tc7kf5GFMRBzgLeiUCNV9h/A3XCrV6puTLL1O1fA5Oj/tbmsSSy0V45Qa4IF8n114SsTPzoUOcaQj8ks1zYRW3EtvarS6yDM27iH8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BnHLx8zr; arc=none smtp.client-ip=209.85.218.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BnHLx8zr" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-ac2ab99e16eso1402804966b.0; Tue, 29 Apr 2025 13:17:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745957853; x=1746562653; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DZuNrs7YE4T2m16nG742v8kNIyjED6LpI5Qr7HTH9X4=; b=BnHLx8zrFcxlmu/s8i4j8WhUJcwJ0b0jZqzl4snDFmy3iWXIP6rmYswafULgjBMtrl UyBezUZIvXM18LZBkUP8ZgyV7C150EDr862i3fw06PFoKaXM5bXi2i6wogKRhCCWtv0P so3tcIIaB3E2jZd/5S7PmNnSRY3BOyhBHbb1mZ5gaWVSG4+smna1YVY8OC5k+PX/xZhn msy1ZIPF8cBsamu27tvjZzAHO0wstEz/1IZ5eLoGCoYzlcVvazUuRWM8oqU4aoTO1KTZ jFOE038p/rhldI7TTG/wmuFp8yIRUGH4r5PE1DOLDM+LDPlv6N3fvqU55Ipv91L1ZfO0 UT4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745957853; x=1746562653; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DZuNrs7YE4T2m16nG742v8kNIyjED6LpI5Qr7HTH9X4=; b=b+fJlu1dTong4UMS2eyKhDigabSUi0rtRzXuzVPXPIS+ZKACPxWUdVeExaPvt1dNiA JYjdIQ/2NuZIAm3YGL/PmIHTv0lKnDvPFGxX8sN7b6XGFuxIvx/jvnUzCRFYSY/Udvaq W5vdcj6TJUQ7Uv7yJRmhhBRP61WtEQgR5gxfwliKD6VQIEmPVweV1Bne8jcl9m/CPBjw C4sG8sUw/+tjCejKdXgi0VudbLvH8uPDQDwW7yd46rAvsUlwwL4CeQbByl97D0qNd1G4 DiWrHZcMQ5wIsg1ETBCEX7tB/nLhXZupRCHL8Uw3wSUaGfGL6d8imB6bIYxzm3lCPDu0 qijw== X-Forwarded-Encrypted: i=1; AJvYcCUr3fTKMqszUDl4jzmY+AlFhkyraFegP847U+aDbkwSVYILA6gxPwSDYut3k2fgMR5ZdBs7NvweClk2QGc=@vger.kernel.org, AJvYcCWVa5icnsdM2BvKW4jEfGFh2bdTBH96+7IZOr6AIhg9mCNJBKX5sIytz43y3bSsFT5HwcIwM4nl@vger.kernel.org X-Gm-Message-State: AOJu0Yz2w5lddaVT7Wzn+Z1DQStPj36Gk4DRRBkd/6NZ4zNaVQ70HYc2 Pl2EVb5AcHV14P0UFBjxTPril59uzFkBxBLqs+2ZDc/8tCd3eBuQ X-Gm-Gg: ASbGnctTlBa15Nly9wV79Br2i5vfOjkR5nh2C+XCFxCfK69tFzCI1vKSGK96olVLZcI kq9hmlSETF00uegQLdWu5wtzJkKRI9bzN+d+wTZ7eq4ZLeMJiTLnRuitA5lyTd6Uah0kT4uCCpI wrHvBHuev8Ezm6lffOgH0JzicvNSnKZ4iQi0KES5Ifdz8KNUbFLndyiQn8lrOy2VElN4JfDUKqc wu3jtU5qeyUugVQtnE0Tx1AILrNe6wYv6Df/lZ54qzR0CYjRsUqVScBrFSC6Or/HgJXdiWUwY7R mlAQ1FpzMRKAOpasMX9SRoOKpSuhMQ1ui0OlT/H+mx1cPrQwlO234WZ9ocjGp/BZLVLsS9/RCbH /X4+pEIqZalVTQcamDTAJEU+8PRjNqg== X-Google-Smtp-Source: AGHT+IHbb6XwQTMHbcj4NKpTvXJBNArGd63mnfnqwmBAIjXR1+Q7V8XIETFcJtxmdSH3zpB3kqvfag== X-Received: by 2002:a17:907:6d19:b0:ac3:26ff:11a0 with SMTP id a640c23a62f3a-acedc734321mr76848066b.38.1745957852456; Tue, 29 Apr 2025 13:17:32 -0700 (PDT) Received: from localhost (dslb-002-205-023-067.002.205.pools.vodafone-ip.de. [2.205.23.67]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5f703833c8csm7808965a12.72.2025.04.29.13.17.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 13:17:31 -0700 (PDT) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Kurt Kanzenbach Cc: Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net 03/11] net: dsa: b53: fix clearing PVID of a port Date: Tue, 29 Apr 2025 22:17:02 +0200 Message-ID: <20250429201710.330937-4-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250429201710.330937-1-jonas.gorski@gmail.com> References: <20250429201710.330937-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Currently the PVID of ports are only set when adding/updating VLANs with PVID set or removing VLANs, but not when clearing the PVID flag of a VLAN. E.g. the following flow $ ip link add br0 type bridge vlan_filtering 1 $ ip link set sw1p1 master bridge $ bridge vlan add dev sw1p1 vid 10 pvid untagged $ bridge vlan add dev sw1p1 vid 10 untagged Would keep the PVID set as 10, despite the flag being cleared. Fix this by checking if we need to unset the PVID on vlan updates. Fixes: a2482d2ce349 ("net: dsa: b53: Plug in VLAN support") Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli Tested-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index 9d4fb54b4ced..65d74c455c57 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1537,12 +1537,21 @@ int b53_vlan_add(struct dsa_switch *ds, int port, bool untagged =3D vlan->flags & BRIDGE_VLAN_INFO_UNTAGGED; bool pvid =3D vlan->flags & BRIDGE_VLAN_INFO_PVID; struct b53_vlan *vl; + u16 old_pvid, new_pvid; int err; =20 err =3D b53_vlan_prepare(ds, port, vlan); if (err) return err; =20 + b53_read16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), &old_pvid); + if (pvid) + new_pvid =3D vlan->vid; + else if (!pvid && vlan->vid =3D=3D old_pvid) + new_pvid =3D b53_default_pvid(dev); + else + new_pvid =3D old_pvid; + vl =3D &dev->vlans[vlan->vid]; =20 b53_get_vlan_entry(dev, vlan->vid, vl); @@ -1562,9 +1571,9 @@ int b53_vlan_add(struct dsa_switch *ds, int port, b53_set_vlan_entry(dev, vlan->vid, vl); b53_fast_age_vlan(dev, vlan->vid); =20 - if (pvid && !dsa_is_cpu_port(ds, port)) { + if (!dsa_is_cpu_port(ds, port) && new_pvid !=3D old_pvid) { b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), - vlan->vid); + new_pvid); b53_fast_age_vlan(dev, vlan->vid); } =20 --=20 2.43.0 From nobody Sun Feb 8 06:04:34 2026 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 85F8D269B0B; Tue, 29 Apr 2025 20:17:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957857; cv=none; b=sq/n9khLgcYY0qgwDLzwW6qGhSQ0/MdDmg6Oqebu7mQxl5mY02JC7hPD9w0KIhI+L9BYoyW26ugrAXYs+ipE7V3hX/dZA6AdEGJ+tzal12lwF9CfADuaCdak1RW9Fmny55eiY2cG1M5oa/EOkdj7ukFtXOr5e6JQr5tI2mUgNHs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957857; c=relaxed/simple; bh=H56EU1nOCCAUx61wOt3KPL9uqVgerVQaBRXIeahG1nk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HfEbOsWQd0Qm1QMsfypJSLV0fXb20CU4vWAg1Rgf/WzEpiAJY3iORfHoHiMoZ4NXiPbbJyhCDkKFiYWiBRD6y+6FdOquPR3Gcj2Me7N+x+RoSZtbl+SYakgMVSwg1tkvt8Btg462Lje+2hlsnR6Gt78j/kHp35T6AQzoKgk5wZA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FnfFxaBQ; arc=none smtp.client-ip=209.85.218.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FnfFxaBQ" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-ace94273f0dso651232566b.3; Tue, 29 Apr 2025 13:17:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745957854; x=1746562654; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+nIEJjxrvzj4Asc20e0VXhByYckHaoOwqjNexZFI2Ac=; b=FnfFxaBQwouygopVUEvmOY18Z+9L/tLNapc8WhgQ+FHddIuOHRpyPd5d/BvQid8d2/ 2FDZY1MKYzoGlsVh1U0T/Qh584N+6NlpoLLj9+WX4Vb6wsl+A5fiWRMaF/lhbBzJHZoS THYY0iGMV2YQUh2kGIXqHGYXF03QHsbaPy3JJKU1hgQrR8Ou8DkdKuPWTgXzyjl78Oke v5R1VFdgnah/Wp4lvVXd6ikV8JaEEBXZjp5slZKiUkacQpZaRRJjVwZRZRIOvulBBuh2 na1y9da8x0CYvKHaMdHlDZ4oZgvY4wYvpz5zznBNSy87HjyZd2yfeFFeyZ31JfdtbKMl 7TBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745957854; x=1746562654; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+nIEJjxrvzj4Asc20e0VXhByYckHaoOwqjNexZFI2Ac=; b=n5VvPxmgypeWJkrqtdjLCflkWuhb4f6xK8KxUo9k0lq4O31I6DLHyMRf69XmlspRc2 5+mHec4rsZrn6Tgyk2McmX5Ga7C/p7DYm/Vi4B3qGJ/NJW2nvuR+3QZ2tTEBF/BqSQOc S8Akes927Ff9u4oj5+hbLaAEh40wmQs8st1HdvhEPILtWeyOo2Mxy8ZpUIAq8DofQOTS LmjY5Z+pzbJ1+LpTTMswMGrH0VM3DgsZWrbEjDS0j4qMj7m7y8FiZMGgNzFX2olmlRca WkfKNRRGR7/pYJDbB6tSO/XO4eAyBQbEWj4XsIRjOrnOf7FOkkviTw9vU250uy3+y6sh L2PA== X-Forwarded-Encrypted: i=1; AJvYcCW+5j3k8+rodYXkKmOajHuQ2L/Plj4qa3pUhE1VuwVV5309GvxI7syC1kVwqOn1ga+B2FnyhqrYaS7UIss=@vger.kernel.org, AJvYcCXDWKX8aGzX1tCp5xXJ+dnXnuYyKnQMMY4sy2KOcw8Z90WsezXs7xDtROfbFMeQK9596NMQZqiL@vger.kernel.org X-Gm-Message-State: AOJu0Yyy9RrJBzPijgsx32kpnz1NRtoemhgMIjsVoFhNsJyb94+RmpRl hLvKb6zCq7ziWWpfX4kulRt3eE2f31z49nSUeXGZfiqc268lkn9x X-Gm-Gg: ASbGncvpWa6MsLs21dp7izuH2rTJd0YxzOPkhoHKi2oemp4gbo8AjY3dSkKEmKcryjS xz+QfoKDGmwc1ZJmZk6z0aXIeyFlonpX+PGvqeWrhhp/NN/ypLsSJBRsE4/rYnBS7/4JbIIDITV 3KZaUvN0ArcY87EgBArvO/Qgpj0+WLbrkXD5zyCM6KszEPfmFKmhzDBSfn5Ear33E9Zhwlrh15n NcOQ9qZu7tEqG6ZejG4sV/Mbc7MFJHQyGpMyT17GTf4y459M28NMVs3PIluRb59jxvjxErL/wE9 mxOuibw6x1kyNFTDuDzyR0hTWeyIULEIk5glbwTbe22lWZnTZ3B9pw4LRZJx7miHqqnfJ/At7ZK xAEe6stlxazxgH2k4vKbEq05aSLH5gw== X-Google-Smtp-Source: AGHT+IHXntBnHZDI4DzAhU+Xas4tLE5FMaDTPfZHs5Vv8EdepdiXsFf6bG0wUeMMLYYpTuH0t4tbfA== X-Received: by 2002:a17:907:d17:b0:aca:a204:5df2 with SMTP id a640c23a62f3a-acedc7932femr68388666b.49.1745957853652; Tue, 29 Apr 2025 13:17:33 -0700 (PDT) Received: from localhost (dslb-002-205-023-067.002.205.pools.vodafone-ip.de. [2.205.23.67]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ace6edae042sm823748666b.169.2025.04.29.13.17.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 13:17:33 -0700 (PDT) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Kurt Kanzenbach Cc: Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net 04/11] net: dsa: b53: fix flushing old pvid VLAN on pvid change Date: Tue, 29 Apr 2025 22:17:03 +0200 Message-ID: <20250429201710.330937-5-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250429201710.330937-1-jonas.gorski@gmail.com> References: <20250429201710.330937-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Presumably the intention here was to flush the VLAN of the old pvid, not the added VLAN again, which we already flushed before. Fixes: a2482d2ce349 ("net: dsa: b53: Plug in VLAN support") Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli Tested-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_com= mon.c index 65d74c455c57..c67c0b5fbc1b 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1574,7 +1574,7 @@ int b53_vlan_add(struct dsa_switch *ds, int port, if (!dsa_is_cpu_port(ds, port) && new_pvid !=3D old_pvid) { b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), new_pvid); - b53_fast_age_vlan(dev, vlan->vid); + b53_fast_age_vlan(dev, old_pvid); } =20 return 0; --=20 2.43.0 From nobody Sun Feb 8 06:04:34 2026 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC22126B2A5; Tue, 29 Apr 2025 20:17:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957858; cv=none; b=tMMuEXRj+Q8NBkgjBibV6ifwPGWEOn7Wh4/pnwQAdsV7rB3nkuQbKaxPp3OGop1JHcxfAOAm2a6P82Zz1j6vLDxuypprxf5Np8v6ZUTgFlcTuGj47qj6lfzldCeX65uex1Xi/uXT36YnYY0UbLuBDAYjopA0NPSSJFqMrq/zyhs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957858; c=relaxed/simple; bh=RLksTWtGHmiTsmRBrna+i1LQAzy2KWB4lGxxw9TFphU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nwrBCmL3UrZeKW35WQQcBEyXu2sksSkNhRjxxcU8DajCD1Q88oRkq/rFL/nfybU0gS4M695Du58m8JHkBzJuIfDkT8Q1zu3JfdYgROg5cdBGfVBicRiC2lFUJUOULyP18GBB3Cuc9kBSy+Bpy7b15LUy9VXugicxahaxvktlkG4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NjrbfYsJ; arc=none smtp.client-ip=209.85.218.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NjrbfYsJ" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-acb39c45b4eso1029689666b.1; Tue, 29 Apr 2025 13:17:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745957855; x=1746562655; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q2T/Nq+E7u0tUt+84S85MGhz6BU3szmSWHsoQxePGLA=; b=NjrbfYsJE2QwNupjOFsK8l0XdePSZIJZGHfAvN2YMuViiYQUHvvVpXqQQQwsox2pn5 ml+gAMkBdHkKD319KJdfjZIy0VLzimHGbBOa2MBGVgTNzjJvV5WVE4r4S1GJgcnby4Ph OuATV8vGdDe22M20qA5y1sHZcuJAbDbbBEVpacs4pH8CL+nOyI7KiF9+e4lfxVvKjm4z 1PYudeQDYPBRzIvZlTjrsC8Egd/gxgq6HO2YdoQLINJOBkNDpbW6pFpVd+pBIdGllC34 Vh9Q0/WVykJkKATEUvNtNO1Pd7NowJlquaeo0+oWBGpkIGarzsTwxJXlEIfk0lYyRGdK Xbig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745957855; x=1746562655; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Q2T/Nq+E7u0tUt+84S85MGhz6BU3szmSWHsoQxePGLA=; b=MisSJc4T61PEjurjD66ZEQ/oI1eb35iXng+6jKz8t+K/oRfkDaZbbPJdR9Hw8FTBHa QO9vsfZYHMPDCHYqNKULG/gRlfEuVI0FUwq18jBmll1+vMxtnlPIJUuQ7wViQMkM5739 LR+2RrS5XM8oEdG/jUSNMApZVgr57L7M6WYcbEfEKD+EHb6BPXtQAGN0n9WH442ZKoQe aCCsaJrlLivhujNxMZTVINnBT/N4K6Y+PHsOTurrFzHSqYT8G68IPQ94gp6PDWCOgR6F u5k9YrDlH6/JJ5sTZNlnjvTBIbs8Xy1zd+khM1eLq8FYtjHnPQHCmQyBJ/uGvBIynTF6 oSGg== X-Forwarded-Encrypted: i=1; AJvYcCXNj3HPDqrGPWvPNJDPiHlVKLmc402AcGqZXMND1tJVKVJ6m9gxJ4GkqOfAq2nDin+AIBmhfFD2@vger.kernel.org, AJvYcCXQ7QFsmG+aBLBwKAmW/gcbUZogGUSEtfmJZ15uvs7LcHkHo8KkRWeKzxikOAX92LG62xHynz8CkpvCQyA=@vger.kernel.org X-Gm-Message-State: AOJu0Yxq+lTpD7aV70oM04B0EP4uCeiKq+dERg9rLjUClp6E5ztdqyCW iy8ECpFd8fxpJHZc1UyF28nEpkwUUEu8Bu68yBOXKRm6MZsGUdsv X-Gm-Gg: ASbGncsCl7nyl9rmQSqBm+oq/oDNsfJwRNZV1zR33MKhS4kmi6Ld2hrNtI3QAOkHljJ B9PA5IlPt9S82Nws7lGMB0d9x612RpSOGYwb7rP5Y67Q6D44Amo7Hcdrq5wmQ36/1UYvMh3dmNu r+fBRHJP59AuTzFZ9S1q9kIuqmCuz/f9xO/uvbBrZchRxlFd/m652ymx5NVxr38Jv/1uXgM1nN+ 5gPvzCLDUYTh1WnVnyx4Vrd95APePJeSG+T/DrNNo1TovkmtH1rJQh5CoAA7DcLLeppUIAnr6Iy 64rIyd7RzSySkZFlu2SuQff8pf0dAelugrPAdZBL7ujZROOLB3bpHSgN9S2k9QMbH31dxwv4kaz Q7zq4xxK10MOCf9DBBb4= X-Google-Smtp-Source: AGHT+IF0hE3VphCT3CRveCG8aAazxAb4JKs5W/aiOXMHMCG7iamIfTXX5SOPcXtbsYaadftMVrIiAQ== X-Received: by 2002:a17:906:f58f:b0:ac7:ec31:deb0 with SMTP id a640c23a62f3a-acedc5945camr53075366b.9.1745957854904; Tue, 29 Apr 2025 13:17:34 -0700 (PDT) Received: from localhost (dslb-002-205-023-067.002.205.pools.vodafone-ip.de. [2.205.23.67]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ace6ed72826sm824039366b.154.2025.04.29.13.17.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 13:17:34 -0700 (PDT) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Kurt Kanzenbach Cc: Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net 05/11] net: dsa: b53: fix VLAN ID for untagged vlan on bridge leave Date: Tue, 29 Apr 2025 22:17:04 +0200 Message-ID: <20250429201710.330937-6-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250429201710.330937-1-jonas.gorski@gmail.com> References: <20250429201710.330937-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The untagged default VLAN is added to the default vlan, which may be one, but we modify the VLAN 0 entry on bridge leave. Fix this to use the correct VLAN entry for the default pvid. Fixes: fea83353177a ("net: dsa: b53: Fix default VLAN ID") Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli Tested-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index c67c0b5fbc1b..c60b552b945c 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1986,7 +1986,7 @@ EXPORT_SYMBOL(b53_br_join); void b53_br_leave(struct dsa_switch *ds, int port, struct dsa_bridge bridg= e) { struct b53_device *dev =3D ds->priv; - struct b53_vlan *vl =3D &dev->vlans[0]; + struct b53_vlan *vl; s8 cpu_port =3D dsa_to_port(ds, port)->cpu_dp->index; unsigned int i; u16 pvlan, reg, pvid; @@ -2012,6 +2012,7 @@ void b53_br_leave(struct dsa_switch *ds, int port, st= ruct dsa_bridge bridge) dev->ports[port].vlan_ctl_mask =3D pvlan; =20 pvid =3D b53_default_pvid(dev); + vl =3D &dev->vlans[pvid]; =20 /* Make this port join all VLANs without VLAN entries */ if (is58xx(dev)) { --=20 2.43.0 From nobody Sun Feb 8 06:04:34 2026 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 12D2126D4D5; Tue, 29 Apr 2025 20:17:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957859; cv=none; b=jAPnpA9+A6g9kbLxkbQrbU3Rc+8criN5VpBmCnOLkbawiEj7RBx86AS37vtNw+vGXJs9e7okVtObRfl5sQCa/E5Dsg7xvK5uCfbBsZTb/72g2c47RbvwJS6g5xhme52sOKoaaj7x00e7LhVOZOZydMElXuD3gpLHg8TQtPnpifk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957859; c=relaxed/simple; bh=OyfoL4dg4jOrrHgAB98UspsGy9e2jurahMZb59aN27g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DRkNOIaWttY4cWfvRsF0KOEldsDVNko3ldzZrdEPmZXA+JLORBb6ZTDiiBJ7YR63PHW3oZndV5cJgY5m79SQuGp5lVq9r48HDW4dFcMzyIHsL5kP360y8Kg66C9XYhfr5nnA9gw3QwaKs6auv6WnwgYkb6Iicbdv+bMRsS3WTFg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=J2h1M0uk; arc=none smtp.client-ip=209.85.208.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="J2h1M0uk" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-5e61d91a087so10268636a12.0; Tue, 29 Apr 2025 13:17:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745957856; x=1746562656; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6YluLA/cjNdRsPKzNlcYRBddzxqszjgxx9cIg46mMLU=; b=J2h1M0ukouOP4GLgkjbcE0EfRz6yN2SSXT4UsXMQJZHKpmbcWnjySIzcdDQUr6wIBf +6nBXBPZ5AFjYOWKMhMgxz7hI6DCIStI71wYLilcPCGhTl3AweN1xP2xUioKuzbu4vDC 0sBGF+T73nBkkAc4TQrxh1on/QrvWh2ZGxOJ/GmrreVcSK3LDxrTn1mM/08cfVWf13GH wVzsNU5m1+oZncdgSkyTvUqqwVXpZclk8TYhD7btvCAw3hgIJT7KWAr7cqZxHP+i3uWb UKvXonLVxgMWoCQN+nae+Rv3n9ia2hqbXMd1ISBjmw3HbGfluArlvvefAxwLz1MZC0c+ PEpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745957856; x=1746562656; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6YluLA/cjNdRsPKzNlcYRBddzxqszjgxx9cIg46mMLU=; b=WAQAlw+dipxD9KnEwNU+qsnPI3lVcezQfn+PAMcqU/Zc2n0M0xjM30gn29dy4S/2K4 ELNkCXmpCK5wo7+p7OVH1Cz8j+uKe402XHGb/birMrslzjDrsDNru3apvJgDhnaJh8j/ s+Pb7SRxQtsUxXJLykpn6jlZRFVtN49ONoyUlRDxn7QSAYVXTOw7Ypfo5qZ3BTluh4vA dUVVd1WN8rGEw1QXLXeSB4OjdftHrygXQl3hHoqBERjBUrOLgbyOphvntWD+hcD0bqDg yyj5eAtBLO1j+pUzuLT0yU090LEICc7alIF4ef330lzlNtZtwFHUMPqUntZaOpJ78JcI wwDA== X-Forwarded-Encrypted: i=1; AJvYcCUFSO4gMawM1/tGGbo2HGK51B/vuDkRxAcZWdvZ/xL88zAoyMza5ii5LwCkwMc0sqNRg6IRZP7sJtC1u10=@vger.kernel.org, AJvYcCUSqDAN/clX2cDvonGXx8W8CLpOWDfp/Xa28ZQ92ZIUk/RZlBNkgfrfkF2hr8RKuXAVAP/nXxpe@vger.kernel.org X-Gm-Message-State: AOJu0Yz3eWm5YsaX4TL1RaksrC+xzBgQaWanUDlRzku5BU4Uqj9UyUGQ gGh8Qbt6HnBlFNFh1LvF8rF5aqNJ/cHuMwwCasVYjFuNZ8Xcq3Jy X-Gm-Gg: ASbGncuHcKWv8Ma2uhjCiKVIt87wSCIbArVRtNImAAyl0JH3qTu4gbmpyHAW2912QXX 2p0u8YCVjRMZkxvrDbIpoTogZnecC9gA87AaCHvHSQgB7cs5QjagrE1URzlkD/O8JdWxo3x9hcC bGe/AkEZ/yLuDg0R71QdsymETzPD5rst3gLJrxs97BFXcL8aKz89BnVgzZQO885rXdpmTWc7ShQ l+vxFFFbO3ECR5I+MPIqrGYg1SOGlElkUMdUAC8jfRFV41LD2e1lkjojfGfkYKq1IN53lcw6uWo NSuNpLF/wn3Y5fvMzlWtev96KicJqR8ZfYXMplB+o45Qx3Lij+36Tm/vcbl3Xa9v9T57LuJVXL8 whkUBztavdULtOHcD5Ng= X-Google-Smtp-Source: AGHT+IGHrAknJLWCPmutveio/sagjgn2a5P1tnFbq7zD6jMc6dYaoAYEfMo8PoPIf7dFuogQdh/iQQ== X-Received: by 2002:a17:907:3e0b:b0:ac2:9c7d:e144 with SMTP id a640c23a62f3a-acedc734163mr69274566b.40.1745957855997; Tue, 29 Apr 2025 13:17:35 -0700 (PDT) Received: from localhost (dslb-002-205-023-067.002.205.pools.vodafone-ip.de. [2.205.23.67]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ace6ecf77dasm822417066b.87.2025.04.29.13.17.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 13:17:35 -0700 (PDT) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Kurt Kanzenbach Cc: Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net 06/11] net: dsa: b53: always rejoin default untagged VLAN on bridge leave Date: Tue, 29 Apr 2025 22:17:05 +0200 Message-ID: <20250429201710.330937-7-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250429201710.330937-1-jonas.gorski@gmail.com> References: <20250429201710.330937-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" While JOIN_ALL_VLAN allows to join all VLANs, we still need to keep the default VLAN enabled so that untagged traffic stays untagged. So rejoin the default VLAN even for switches with JOIN_ALL_VLAN support. Fixes: 48aea33a77ab ("net: dsa: b53: Add JOIN_ALL_VLAN support") Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli Tested-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index c60b552b945c..4871e117f5ef 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -2021,12 +2021,12 @@ void b53_br_leave(struct dsa_switch *ds, int port, = struct dsa_bridge bridge) if (!(reg & BIT(cpu_port))) reg |=3D BIT(cpu_port); b53_write16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, reg); - } else { - b53_get_vlan_entry(dev, pvid, vl); - vl->members |=3D BIT(port) | BIT(cpu_port); - vl->untag |=3D BIT(port) | BIT(cpu_port); - b53_set_vlan_entry(dev, pvid, vl); } + + b53_get_vlan_entry(dev, pvid, vl); + vl->members |=3D BIT(port) | BIT(cpu_port); + vl->untag |=3D BIT(port) | BIT(cpu_port); + b53_set_vlan_entry(dev, pvid, vl); } EXPORT_SYMBOL(b53_br_leave); =20 --=20 2.43.0 From nobody Sun Feb 8 06:04:34 2026 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C60726FDBB; Tue, 29 Apr 2025 20:17:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957861; cv=none; b=QlL3Ry12gH8g/nJ5y6edALXcm8LnFsNbgX/f2L6uT8K9Y9w4F57G8LueY7om21HnzgW1GwcFrwWZ7WpbIg70XO5m9JuwgbtGKRDLt56hEjFdJDFV4Usgj774iCQXUCg3nskyzO9Ojo2OMm5vOKMuyL21VP+LgES5b7gNFNr/FCY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957861; c=relaxed/simple; bh=so66WP6Aaj8gptbBVhszIWMXAn7ZiaCYJOt4hGq8KfI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=p067m3gCU6IEcDC7lQs3oMkV4Pop5Eff592f1uiJwyYJoHWQbAWkXxJLu885Jl4gDUnMAc4eD/ClOErkJfaPg4v6xVywqSvqwvIwCZiuxQI8lQRF3y5QnjBoI8+l2dSXJL+0A1O6QJp/0fiECBLJFaTwiTdRuHv+TEZrRrryU/Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TgwhIlgq; arc=none smtp.client-ip=209.85.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TgwhIlgq" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5f62d3ed994so11726708a12.2; Tue, 29 Apr 2025 13:17:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745957857; x=1746562657; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KDK49dhMLFcxQ+vwRz/oOcCQxP4BCt5EiPYfwgbH7bk=; b=TgwhIlgq90cF/Z1ekiZF1eRRJXTOetp0fAm58HlwMYdm6smxvox1dGFNpVBYidDNyW 87kH22i/8SZINZoy62/qY0kNuGYnSeU9g8iMJKZAoV2W324Fg0d04mmKknAeR772lYwb CrvGoTrwaP2KSnNCrHvSkMSjUNAEYVfQ+gfrPvfV9QL1lQ1uJReqeMiFc/yCsdRT34zj 75h58AhHYBB9r3ZSG+Anry1MtU98CTNLy7E+a8sFan35OME039bIwb8dTziTPSzzUJrw tggqLdAAP0uAAUqhJ7HbL5D2RI7JUm9i5ioBHp6elJLlTE8RXf/4f3E4D3J3doD8NYls +R3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745957857; x=1746562657; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KDK49dhMLFcxQ+vwRz/oOcCQxP4BCt5EiPYfwgbH7bk=; b=Ho2dXoph0MZblF9t/Ym5VeeVS4qSmHgW9vodoOpMeH1KE/k9yg6GDAcmdUyILAWtHa t88QJy/+Kk4s/5dNJgg2Tz3kZA3E7/Rbt3SuQdxcKCs0CI/hrqU7PwBlmSNgHarWNbLI jvRe3ZBKE4zkUvXtUfb6izp/9p2HvOaeidkIytGJjlju4K9lZPS1i+/2Y6GXgpebq5u6 IwJlnaN8uPL7sZvV8YhP6bLp0xkY6bpIyJoLPAc8GO12Cd0W6bnNcsX2laAhNT3SDWxM gqGQYe+j2qSAh1sN0Boc3HsjiXg9J14wbOULKmt+UcEcV4bQiaJoB9zVpxb3hgLUaixZ vGVQ== X-Forwarded-Encrypted: i=1; AJvYcCU7TyEPf4TYfQmmPrTwNkalsI3Sq+l63UI9Gekjw5ovvIi/raFlPo2dALqh1hD91btNXlGerhqZ@vger.kernel.org, AJvYcCXVecSLw3gfiz2NqI9Z04fjN0wahNWnCx39zLD3C1TK/Vd5Q/94Zc0OlcpnoMoU5gLfgKvYB36G1lOArYs=@vger.kernel.org X-Gm-Message-State: AOJu0Yze2/5wiU7JKSKDk8oaazTBajaUfL27gqOZLy+Gqvk5fAIFJJMd Da+lqcffBTJ/Xpv2NvnxPFhccaP/VtsWL62oKuGTu19V1fciExxg X-Gm-Gg: ASbGncuYcKdjKRqWW4cAwEXkAB4Is5x6y1DUG4pWpQAvc9pDSvZL1cFioh6Cw3lwghi 4GPHu54sFGBR56U4rDaIJrDrVM5wHpHOWTKUWHfiD/HpAS0HS4BmY8lYX5BsBe7WzswDUAtysjE 8Ly8u+Lg6qgxKR64UsmbyA7CluoxUZgLYBl8RJTj4ipEJPQRmneaAz/90egPVt5WLyfbKLoc4CF Gz0EstJFJqPTb32IbMM5svsP5Nrh6GO0sd6uXhts80Dugu1NZ9DLcCOWOzvLvsPPoyCTN6215YB CU/vFckw/gJ5KZ2DBRaImzI/IGu6KdcZyCuyeStWKOVc76f2krkhAHj3sVtXGZhmlnAoC//ajwc 6DLVKuKd2HfRStfJdMNc= X-Google-Smtp-Source: AGHT+IGszZUFVe/1fddVKVtCKfE/40i3EkrAuwBiACY9MJT5CbfqgtSjDYTyBgYNXiONMne6C6giDA== X-Received: by 2002:a17:906:1119:b0:acb:bbc4:3344 with SMTP id a640c23a62f3a-acedc5e042cmr54989166b.22.1745957857174; Tue, 29 Apr 2025 13:17:37 -0700 (PDT) Received: from localhost (dslb-002-205-023-067.002.205.pools.vodafone-ip.de. [2.205.23.67]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ace6e41c491sm822230866b.34.2025.04.29.13.17.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 13:17:36 -0700 (PDT) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Kurt Kanzenbach Cc: Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net 07/11] net: dsa: b53: do not allow to configure VLAN 0 Date: Tue, 29 Apr 2025 22:17:06 +0200 Message-ID: <20250429201710.330937-8-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250429201710.330937-1-jonas.gorski@gmail.com> References: <20250429201710.330937-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Since we cannot set forwarding destinations per VLAN, we should not have a VLAN 0 configured, as it would allow untagged traffic to work across ports on VLAN aware bridges regardless if a PVID untagged VLAN exists. So remove the VLAN 0 on join, an re-add it on leave. But only do so if we have a VLAN aware bridge, as without it, untagged traffic would become tagged with VID 0 on a VLAN unaware bridge. Fixes: a2482d2ce349 ("net: dsa: b53: Plug in VLAN support") Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli Tested-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 36 ++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index 4871e117f5ef..0b28791cca52 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1544,6 +1544,9 @@ int b53_vlan_add(struct dsa_switch *ds, int port, if (err) return err; =20 + if (vlan->vid =3D=3D 0) + return 0; + b53_read16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), &old_pvid); if (pvid) new_pvid =3D vlan->vid; @@ -1556,10 +1559,7 @@ int b53_vlan_add(struct dsa_switch *ds, int port, =20 b53_get_vlan_entry(dev, vlan->vid, vl); =20 - if (vlan->vid =3D=3D 0 && vlan->vid =3D=3D b53_default_pvid(dev)) - untagged =3D true; - - if (vlan->vid > 0 && dsa_is_cpu_port(ds, port)) + if (dsa_is_cpu_port(ds, port)) untagged =3D false; =20 vl->members |=3D BIT(port); @@ -1589,6 +1589,9 @@ int b53_vlan_del(struct dsa_switch *ds, int port, struct b53_vlan *vl; u16 pvid; =20 + if (vlan->vid =3D=3D 0) + return 0; + b53_read16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), &pvid); =20 vl =3D &dev->vlans[vlan->vid]; @@ -1935,8 +1938,9 @@ int b53_br_join(struct dsa_switch *ds, int port, stru= ct dsa_bridge bridge, bool *tx_fwd_offload, struct netlink_ext_ack *extack) { struct b53_device *dev =3D ds->priv; + struct b53_vlan *vl; s8 cpu_port =3D dsa_to_port(ds, port)->cpu_dp->index; - u16 pvlan, reg; + u16 pvlan, reg, pvid; unsigned int i; =20 /* On 7278, port 7 which connects to the ASP should only receive @@ -1945,6 +1949,9 @@ int b53_br_join(struct dsa_switch *ds, int port, stru= ct dsa_bridge bridge, if (dev->chip_id =3D=3D BCM7278_DEVICE_ID && port =3D=3D 7) return -EINVAL; =20 + pvid =3D b53_default_pvid(dev); + vl =3D &dev->vlans[pvid]; + /* Make this port leave the all VLANs join since we will have proper * VLAN entries from now on */ @@ -1956,6 +1963,15 @@ int b53_br_join(struct dsa_switch *ds, int port, str= uct dsa_bridge bridge, b53_write16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, reg); } =20 + if (ds->vlan_filtering) { + b53_get_vlan_entry(dev, pvid, vl); + vl->members &=3D ~BIT(port); + if (vl->members =3D=3D BIT(cpu_port)) + vl->members &=3D ~BIT(cpu_port); + vl->untag =3D vl->members; + b53_set_vlan_entry(dev, pvid, vl); + } + b53_read16(dev, B53_PVLAN_PAGE, B53_PVLAN_PORT_MASK(port), &pvlan); =20 b53_for_each_port(dev, i) { @@ -2023,10 +2039,12 @@ void b53_br_leave(struct dsa_switch *ds, int port, = struct dsa_bridge bridge) b53_write16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, reg); } =20 - b53_get_vlan_entry(dev, pvid, vl); - vl->members |=3D BIT(port) | BIT(cpu_port); - vl->untag |=3D BIT(port) | BIT(cpu_port); - b53_set_vlan_entry(dev, pvid, vl); + if (ds->vlan_filtering) { + b53_get_vlan_entry(dev, pvid, vl); + vl->members |=3D BIT(port) | BIT(cpu_port); + vl->untag |=3D BIT(port) | BIT(cpu_port); + b53_set_vlan_entry(dev, pvid, vl); + } } EXPORT_SYMBOL(b53_br_leave); =20 --=20 2.43.0 From nobody Sun Feb 8 06:04:34 2026 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23B662741D3; Tue, 29 Apr 2025 20:17:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957862; cv=none; b=o/4it400FDjklCArH9IUHvHjQ930c3lbTKJkAhdVBSGpk/GJAobxzw7J2qohAubdfdjD/US4gCishvuvOoHpSVwvklMmyDccrbLFQcgTaSOiTukIIlLiVj1tCRKO3EM0ycbcRxR8FE0A5leBQP9tcJ9TV9tReuSwjlE5aMrmeKs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957862; c=relaxed/simple; bh=NC6BjIlDW2bse6NI2QYcaBzkHqHpmEvDywCM6E3fajI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=F9Yq1B3yzIXtJxbcEjbMoCZrfsFq83ABtna9qb9Ey87g9rwTJXnBfr9WTkzBzm/5+qTZlKX10i+H1pyCuXYvkM1XCZsZuee4NaVd2bCcqPFw1OoId9KhQ2DI01/fzv9iGhGJA5dfL6aYy3o5/B9/FTqtBshRbGZ72CZ8oMVxprY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RrINI36P; arc=none smtp.client-ip=209.85.218.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RrINI36P" Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-ac2c663a3daso1284684966b.2; Tue, 29 Apr 2025 13:17:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745957858; x=1746562658; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4FDeoPkfxPm46C6PaSQAiFc6ilbuBJH6D2vRzmLBaXg=; b=RrINI36POWixJ8b1ryyma7Bc96Lc9T8pUKUB8lTTi/E7ffDYnr9ywobmeu1b1KFdwc t0IV4lwbSIuh4kTfUjKdvlf2dyYIEZep7MTTujxxRHjRihOngngQCF7aAA75dKGCVIHP +rMpF56QNlqnUamLJLTBt72PsdJoOTlW3hHXgj/UrrtJe10RzEyv9HRpymOMhMwH9FZx DGYslGY47PBwjPQI1kEGlzUSV5a8h+iNorBAvh5TQa3feGwaPcTQhj2AMA3YTauhmxji zuwY9hYlnNoS7ulhL9O1hR/Yuviay25pCWS+7jewHNmoL/jK8DkeGhM3nS+L9Z8BhKgz d5SQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745957858; x=1746562658; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4FDeoPkfxPm46C6PaSQAiFc6ilbuBJH6D2vRzmLBaXg=; b=ffkxsC4O6nEDyfxpNGND2hRRqs189iaAiZKzux+v5AAcGAk9cfQciOtEpCnlSg4J4c N1WV2eFgBHrhU9ZhEpazy94EhKr947Evd4rbeOa+MbfT5XEANKnWHCkVsTjVyZGVaapI 1KxR6EpRo8vxDVhX2rKztoOUiiZs+OAsjx7REPEYve3TUN3msqZTHi3JdNbfszESHnW7 Cy2ZEnfyn2cn7GUAoyVipNRBVhBe9m6doJ3nPZozTkXtPtPxQVYZDj9CA6TdUpqDRmZn LgGgJaDWzlJlQ8z8ru9kUWuXHsuXcg/TXEdjtHR12Owqg1FbEDQf6ohiv1Ld6oD2Hgyx PCvw== X-Forwarded-Encrypted: i=1; AJvYcCUSFuZ1m+qf9nxz7vpt0C9b48kvVTQ822osF3XTcqFCpR46VCz9hvYSgd+dIK8TluOJarwqjnWGfqeSKoI=@vger.kernel.org, AJvYcCV+nbyeL6j7YK5YVdYMFlUi4lkzJjdsxYUzeEbCjL9h24bAElBuVVn3qz3s99mfdnudEAsi2C5f@vger.kernel.org X-Gm-Message-State: AOJu0YxcZ/BaYNLMyIijFxrxpwhsOuzEbGxp3FerNruML5VK9lg4O0nC wfe93txQoU4HBNpr1SLRKEBnVJEPRd4ZFYMJkwXtkULPR+lCQJb+ X-Gm-Gg: ASbGncsfr6IwqzueXqJmgeDxBR+1XEOJRcsuB4cWTPT8GWzyKiRTsMDprQpqmb7Tgi+ 8WpVyEiEcxus3OGBxmlgJwWguWSuLqM2Uu9b0RWfOafGl2usWLUxufXJR35/F4vW5ESxeje6AdT peF5QnJViGdj6j0Y43noSzo5uoEw+evFnlB8nf7C8CFE224mKqOkGNNGWI3PJEKNj1cWBA6ZxO8 GIUPc7b288Mhp4/oT8z8uNnwDM4GV3QXnKyybrdWjGpcqD5o88fWDidgoi8yLSiJkRznDuYde1Q dE/8wWcdp3QNizg2RIaLtHsXwFkUT3t3lfo6Qo9n7giZoK8ksCtpjaamHx7/vaug1cw8GhWOxAJ xMh03OQ80Q7MosYOsrG8= X-Google-Smtp-Source: AGHT+IGzV23esDmkOB0c+h8Ee6nwGnXXnRQitYJLm0wThkRAKFQNz/y8jS045dBMw6ojvBYWMbM9jw== X-Received: by 2002:a17:907:7206:b0:ace:bf94:2d2c with SMTP id a640c23a62f3a-acedc767e05mr70623066b.54.1745957858199; Tue, 29 Apr 2025 13:17:38 -0700 (PDT) Received: from localhost (dslb-002-205-023-067.002.205.pools.vodafone-ip.de. [2.205.23.67]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ace6e41b0f7sm826145266b.22.2025.04.29.13.17.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 13:17:37 -0700 (PDT) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Kurt Kanzenbach Cc: Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net 08/11] net: dsa: b53: do not program vlans when vlan filtering is off Date: Tue, 29 Apr 2025 22:17:07 +0200 Message-ID: <20250429201710.330937-9-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250429201710.330937-1-jonas.gorski@gmail.com> References: <20250429201710.330937-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Documentation/networking/switchdev.rst says: - with VLAN filtering turned off: the bridge is strictly VLAN unaware and i= ts data path will process all Ethernet frames as if they are VLAN-untagged. The bridge VLAN database can still be modified, but the modifications sho= uld have no effect while VLAN filtering is turned off. This breaks if we immediately apply the VLAN configuration, so skip writing it when vlan_filtering is off. Fixes: 0ee2af4ebbe3 ("net: dsa: set configure_vlan_while_not_filtering to t= rue by default") Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli Tested-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 48 +++++++++++++++++++------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index 0b28791cca52..ee2f1be62618 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1547,6 +1547,9 @@ int b53_vlan_add(struct dsa_switch *ds, int port, if (vlan->vid =3D=3D 0) return 0; =20 + if (!ds->vlan_filtering) + return 0; + b53_read16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), &old_pvid); if (pvid) new_pvid =3D vlan->vid; @@ -1592,6 +1595,9 @@ int b53_vlan_del(struct dsa_switch *ds, int port, if (vlan->vid =3D=3D 0) return 0; =20 + if (!ds->vlan_filtering) + return 0; + b53_read16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), &pvid); =20 vl =3D &dev->vlans[vlan->vid]; @@ -1952,18 +1958,20 @@ int b53_br_join(struct dsa_switch *ds, int port, st= ruct dsa_bridge bridge, pvid =3D b53_default_pvid(dev); vl =3D &dev->vlans[pvid]; =20 - /* Make this port leave the all VLANs join since we will have proper - * VLAN entries from now on - */ - if (is58xx(dev)) { - b53_read16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, ®); - reg &=3D ~BIT(port); - if ((reg & BIT(cpu_port)) =3D=3D BIT(cpu_port)) - reg &=3D ~BIT(cpu_port); - b53_write16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, reg); - } - if (ds->vlan_filtering) { + /* Make this port leave the all VLANs join since we will have + * proper VLAN entries from now on + */ + if (is58xx(dev)) { + b53_read16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, + ®); + reg &=3D ~BIT(port); + if ((reg & BIT(cpu_port)) =3D=3D BIT(cpu_port)) + reg &=3D ~BIT(cpu_port); + b53_write16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, + reg); + } + b53_get_vlan_entry(dev, pvid, vl); vl->members &=3D ~BIT(port); if (vl->members =3D=3D BIT(cpu_port)) @@ -2030,16 +2038,16 @@ void b53_br_leave(struct dsa_switch *ds, int port, = struct dsa_bridge bridge) pvid =3D b53_default_pvid(dev); vl =3D &dev->vlans[pvid]; =20 - /* Make this port join all VLANs without VLAN entries */ - if (is58xx(dev)) { - b53_read16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, ®); - reg |=3D BIT(port); - if (!(reg & BIT(cpu_port))) - reg |=3D BIT(cpu_port); - b53_write16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, reg); - } - if (ds->vlan_filtering) { + /* Make this port join all VLANs without VLAN entries */ + if (is58xx(dev)) { + b53_read16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, ®); + reg |=3D BIT(port); + if (!(reg & BIT(cpu_port))) + reg |=3D BIT(cpu_port); + b53_write16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, reg); + } + b53_get_vlan_entry(dev, pvid, vl); vl->members |=3D BIT(port) | BIT(cpu_port); vl->untag |=3D BIT(port) | BIT(cpu_port); --=20 2.43.0 From nobody Sun Feb 8 06:04:34 2026 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5F907274FE0; Tue, 29 Apr 2025 20:17:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957863; cv=none; b=FmGqQWeOM6lwWv/9lKJsQAQ65v+oo2wfziE0clB/l9bAa0iLBkTZ85AH1D08w7GZF16LJt+kTygpdJC6hI9Q2cOqUJ7GSdH9A/3NX02S1lUTKHVgC2p84aSIF4RQNaelLi303DePjEQhWkkqcYYZLfBIqM/i65gJr7ia1QrXoJI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957863; c=relaxed/simple; bh=yN2WrUbdu3laYnS9OyLYMWDymv0xbwCtOPLLScc9R6k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=O4iDOqduxlqC8AsbtQtDBwVFJ6UEhMKEKh9hsNpArXQBHyG7ih46AGim8EYqXKcNEZVfvFYyE29GVaM8nNh0mDwj2J8wP3ZbJ4o6YBlRLEzsDkiE6NaKasj7fOp843WRXPAsH64f81E3NnbOwFymEf7Vq008i9+fY3a04lw4kG4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XJU4VAj/; arc=none smtp.client-ip=209.85.218.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XJU4VAj/" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-acec5b99052so237477766b.1; Tue, 29 Apr 2025 13:17:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745957860; x=1746562660; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HSF/cqgkgiZjMVcssNZkYUh4M79ChrFY2+W6TuDZtn8=; b=XJU4VAj/hs84H1n0gZdbnixgt0kEUQVqxUH0pSMxjr4LIlt5HhQWtaEV4vTIJRSqoM nvTE7VPWDx/Dj6FUtq0/9RrPtWcoSlQPfvGAIpM3nfGciWFNo7+iPALw3dlHtb/A8w3/ e9EuRMW5jir6oecwVhtBqSWXVhfuSWDtOH9wzs4VTGx9b0uxmhTFeDyBRvuqRUHD5S42 0yri1Ir3wGrsG7SCjad9bSnGXRR9x/aHfT80Aazolmn+JfA74DfBIMP7S6ZgBoZdYFIh fQfGivvoGBIlmiFQEDShDvJkAg9sfDon0Inne1WeVjKXE5EFq1i6zr+OzauKnu+/wXlu gJHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745957860; x=1746562660; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HSF/cqgkgiZjMVcssNZkYUh4M79ChrFY2+W6TuDZtn8=; b=JHu3J891m38nbc4wgNdy11hpDPwUflwIthrt5LJSK8MEh3STbzoeQMOKtcu27TL0wt 69v/jMh8M19Qd7YlSXSK3mmb9acSdKzYLHAhidP+0nTpEuk75qoYq4Xo40iwvWAiiIEl 2T3m2FoulVziemVckla0jJYYeezdTN0FeTgzoZbbIE1Yqn7x0FAo7o8Gjjr75XuA0aMR DmKX8OXZXGXPTnem+nFlbwkRbWcIGF6P7jYXFVPiGFwEdJxMv+/Gds1R9XW2Fwunfcx9 glvmLdsUFkRrWyCM7EeZpJb7BBXrrKKGrBarFjZrdR1jB2jlOO8lTCGi3tJcoh56Ehr+ Lk1A== X-Forwarded-Encrypted: i=1; AJvYcCU+vwxp5tSZl4CEj5oCxOCdIq1L86/2jIoW+NSa2WZy1G3B4qXMb+1ro9VVwGbO7oagysHATJEI2q2YJcs=@vger.kernel.org, AJvYcCUFOqIxSlyao0DaDvaTNkDpDcyjfHg2nCtbj2i4953VBZ5NT17IhJ35RoJHvZiTQ4rUuccG0crB@vger.kernel.org X-Gm-Message-State: AOJu0YwNMIXfoU9LwphUmoqdWmFzT/i3K3xWZvTor7MXnU6hZ6mcc4JI mxY0qEHW0Fxu1S1BUFNQUQCaHBKWLnWVAyAq6aleT/0kP4CxAHEp X-Gm-Gg: ASbGncvFo/dLRycIekhhZMl/yLDzfbiEfsJGwxvdynrxDpuTe6yg6VkcMM1FzZS7UEi BHn7U7fnlcMlI0bCJIGtusNlp5T8112Ta2JV42CDhqOHNELpXglJyE8+I01N8tE20JpB0H8FE+C xJnKfNOnkqoNalhAwSSUMxU5La/l6JZYE+Exzy+rLpl19tXIkFvTakCDlwtNKeSWYRQcwgtT1Jh A+d0MqIYs2cbVReB/VZN+Vq+M5ObtcXvNU9zNIVD4Sk2Z1JHYIVih0fj/xqJjcih62mepG/C9ZL uAhK/4DnpJ8Qajn35byt3nummuqwwrE5YLkeTHzy/WBz6BcLDIh036V0doYQCoJDzANEVswPpAP NPepnpsK/my7rullwz38= X-Google-Smtp-Source: AGHT+IH/0oqo25kwxDI8ezVd2VcRRWSqDbzLIZpJCRlGr+q55RfI3Ane0wlbwBauigJLzOlet3AAZA== X-Received: by 2002:a17:907:9628:b0:ace:6a1e:61e0 with SMTP id a640c23a62f3a-acedc626f58mr74461666b.25.1745957859497; Tue, 29 Apr 2025 13:17:39 -0700 (PDT) Received: from localhost (dslb-002-205-023-067.002.205.pools.vodafone-ip.de. [2.205.23.67]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ace6e41c934sm822407766b.8.2025.04.29.13.17.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 13:17:38 -0700 (PDT) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Kurt Kanzenbach Cc: Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net 09/11] net: dsa: b53: fix toggling vlan_filtering Date: Tue, 29 Apr 2025 22:17:08 +0200 Message-ID: <20250429201710.330937-10-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250429201710.330937-1-jonas.gorski@gmail.com> References: <20250429201710.330937-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" To allow runtime switching between vlan aware and vlan non-aware mode, we need to properly keep track of any bridge VLAN configuration. Likewise, we need to know when we actually switch between both modes, to not have to rewrite the full VLAN table every time we update the VLANs. So keep track of the current vlan_filtering mode, and on changes, apply the appropriate VLAN configuration. Fixes: 0ee2af4ebbe3 ("net: dsa: set configure_vlan_while_not_filtering to t= rue by default") Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli Tested-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 104 ++++++++++++++++++++++--------- drivers/net/dsa/b53/b53_priv.h | 2 + 2 files changed, 75 insertions(+), 31 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index ee2f1be62618..0a7749b416f7 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -763,6 +763,22 @@ static bool b53_vlan_port_needs_forced_tagged(struct d= sa_switch *ds, int port) return dev->tag_protocol =3D=3D DSA_TAG_PROTO_NONE && dsa_is_cpu_port(ds,= port); } =20 +static bool b53_vlan_port_may_join_untagged(struct dsa_switch *ds, int por= t) +{ + struct b53_device *dev =3D ds->priv; + struct dsa_port *dp; + + if (!dev->vlan_filtering) + return true; + + dp =3D dsa_to_port(ds, port); + + if (dsa_port_is_cpu(dp)) + return true; + + return dp->bridge =3D=3D NULL; +} + int b53_configure_vlan(struct dsa_switch *ds) { struct b53_device *dev =3D ds->priv; @@ -781,7 +797,7 @@ int b53_configure_vlan(struct dsa_switch *ds) b53_do_vlan_op(dev, VTA_CMD_CLEAR); } =20 - b53_enable_vlan(dev, -1, dev->vlan_enabled, ds->vlan_filtering); + b53_enable_vlan(dev, -1, dev->vlan_enabled, dev->vlan_filtering); =20 /* Create an untagged VLAN entry for the default PVID in case * CONFIG_VLAN_8021Q is disabled and there are no calls to @@ -789,26 +805,39 @@ int b53_configure_vlan(struct dsa_switch *ds) * entry. Do this only when the tagging protocol is not * DSA_TAG_PROTO_NONE */ + v =3D &dev->vlans[def_vid]; b53_for_each_port(dev, i) { - v =3D &dev->vlans[def_vid]; - v->members |=3D BIT(i); + if (!b53_vlan_port_may_join_untagged(ds, i)) + continue; + + vl.members |=3D BIT(i); if (!b53_vlan_port_needs_forced_tagged(ds, i)) - v->untag =3D v->members; - b53_write16(dev, B53_VLAN_PAGE, - B53_VLAN_PORT_DEF_TAG(i), def_vid); + vl.untag =3D vl.members; + b53_write16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(i), + def_vid); } + b53_set_vlan_entry(dev, def_vid, &vl); =20 - /* Upon initial call we have not set-up any VLANs, but upon - * system resume, we need to restore all VLAN entries. - */ - for (vid =3D def_vid; vid < dev->num_vlans; vid++) { - v =3D &dev->vlans[vid]; + if (dev->vlan_filtering) { + /* Upon initial call we have not set-up any VLANs, but upon + * system resume, we need to restore all VLAN entries. + */ + for (vid =3D def_vid + 1; vid < dev->num_vlans; vid++) { + v =3D &dev->vlans[vid]; =20 - if (!v->members) - continue; + if (!v->members) + continue; + + b53_set_vlan_entry(dev, vid, v); + b53_fast_age_vlan(dev, vid); + } =20 - b53_set_vlan_entry(dev, vid, v); - b53_fast_age_vlan(dev, vid); + b53_for_each_port(dev, i) { + if (!dsa_is_cpu_port(ds, i)) + b53_write16(dev, B53_VLAN_PAGE, + B53_VLAN_PORT_DEF_TAG(i), + dev->ports[i].pvid); + } } =20 return 0; @@ -1127,7 +1156,9 @@ EXPORT_SYMBOL(b53_setup_devlink_resources); static int b53_setup(struct dsa_switch *ds) { struct b53_device *dev =3D ds->priv; + struct b53_vlan *vl; unsigned int port; + u16 pvid; int ret; =20 /* Request bridge PVID untagged when DSA_TAG_PROTO_NONE is set @@ -1146,6 +1177,15 @@ static int b53_setup(struct dsa_switch *ds) return ret; } =20 + /* setup default vlan for filtering mode */ + pvid =3D b53_default_pvid(dev); + vl =3D &dev->vlans[pvid]; + b53_for_each_port(dev, port) { + vl->members |=3D BIT(port); + if (!b53_vlan_port_needs_forced_tagged(ds, port)) + vl->untag |=3D BIT(port); + } + b53_reset_mib(dev); =20 ret =3D b53_apply_config(dev); @@ -1499,7 +1539,10 @@ int b53_vlan_filtering(struct dsa_switch *ds, int po= rt, bool vlan_filtering, { struct b53_device *dev =3D ds->priv; =20 - b53_enable_vlan(dev, port, dev->vlan_enabled, vlan_filtering); + if (dev->vlan_filtering !=3D vlan_filtering) { + dev->vlan_filtering =3D vlan_filtering; + b53_apply_config(dev); + } =20 return 0; } @@ -1524,7 +1567,7 @@ static int b53_vlan_prepare(struct dsa_switch *ds, in= t port, if (vlan->vid >=3D dev->num_vlans) return -ERANGE; =20 - b53_enable_vlan(dev, port, true, ds->vlan_filtering); + b53_enable_vlan(dev, port, true, dev->vlan_filtering); =20 return 0; } @@ -1547,21 +1590,17 @@ int b53_vlan_add(struct dsa_switch *ds, int port, if (vlan->vid =3D=3D 0) return 0; =20 - if (!ds->vlan_filtering) - return 0; - - b53_read16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), &old_pvid); + old_pvid =3D dev->ports[port].pvid; if (pvid) new_pvid =3D vlan->vid; else if (!pvid && vlan->vid =3D=3D old_pvid) new_pvid =3D b53_default_pvid(dev); else new_pvid =3D old_pvid; + dev->ports[port].pvid =3D new_pvid; =20 vl =3D &dev->vlans[vlan->vid]; =20 - b53_get_vlan_entry(dev, vlan->vid, vl); - if (dsa_is_cpu_port(ds, port)) untagged =3D false; =20 @@ -1571,6 +1610,9 @@ int b53_vlan_add(struct dsa_switch *ds, int port, else vl->untag &=3D ~BIT(port); =20 + if (!dev->vlan_filtering) + return 0; + b53_set_vlan_entry(dev, vlan->vid, vl); b53_fast_age_vlan(dev, vlan->vid); =20 @@ -1595,23 +1637,22 @@ int b53_vlan_del(struct dsa_switch *ds, int port, if (vlan->vid =3D=3D 0) return 0; =20 - if (!ds->vlan_filtering) - return 0; - - b53_read16(dev, B53_VLAN_PAGE, B53_VLAN_PORT_DEF_TAG(port), &pvid); + pvid =3D dev->ports[port].pvid; =20 vl =3D &dev->vlans[vlan->vid]; =20 - b53_get_vlan_entry(dev, vlan->vid, vl); - vl->members &=3D ~BIT(port); =20 if (pvid =3D=3D vlan->vid) pvid =3D b53_default_pvid(dev); + dev->ports[port].pvid =3D pvid; =20 if (untagged && !b53_vlan_port_needs_forced_tagged(ds, port)) vl->untag &=3D ~(BIT(port)); =20 + if (!dev->vlan_filtering) + return 0; + b53_set_vlan_entry(dev, vlan->vid, vl); b53_fast_age_vlan(dev, vlan->vid); =20 @@ -1958,7 +1999,7 @@ int b53_br_join(struct dsa_switch *ds, int port, stru= ct dsa_bridge bridge, pvid =3D b53_default_pvid(dev); vl =3D &dev->vlans[pvid]; =20 - if (ds->vlan_filtering) { + if (dev->vlan_filtering) { /* Make this port leave the all VLANs join since we will have * proper VLAN entries from now on */ @@ -2038,7 +2079,7 @@ void b53_br_leave(struct dsa_switch *ds, int port, st= ruct dsa_bridge bridge) pvid =3D b53_default_pvid(dev); vl =3D &dev->vlans[pvid]; =20 - if (ds->vlan_filtering) { + if (dev->vlan_filtering) { /* Make this port join all VLANs without VLAN entries */ if (is58xx(dev)) { b53_read16(dev, B53_VLAN_PAGE, B53_JOIN_ALL_VLAN_EN, ®); @@ -2803,6 +2844,7 @@ struct b53_device *b53_switch_alloc(struct device *ba= se, ds->ops =3D &b53_switch_ops; ds->phylink_mac_ops =3D &b53_phylink_mac_ops; dev->vlan_enabled =3D true; + dev->vlan_filtering =3D false; /* Let DSA handle the case were multiple bridges span the same switch * device and different VLAN awareness settings are requested, which * would be breaking filtering semantics for any of the other bridge diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index 0166c37a13a7..4636e27fd1ee 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -96,6 +96,7 @@ struct b53_pcs { =20 struct b53_port { u16 vlan_ctl_mask; + u16 pvid; struct ethtool_keee eee; }; =20 @@ -147,6 +148,7 @@ struct b53_device { unsigned int num_vlans; struct b53_vlan *vlans; bool vlan_enabled; + bool vlan_filtering; unsigned int num_ports; struct b53_port *ports; =20 --=20 2.43.0 From nobody Sun Feb 8 06:04:34 2026 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 92FD325FA07; Tue, 29 Apr 2025 20:17:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957864; cv=none; b=npqzaEa6mey6lcZ2QY5V2NlhMvXUFV6GwmZeqkT5b1XXl/XAknsWXFtbOnCRBjkgNMZQAWUEbClyKTfDC71g2mzUQqKK33D5nAJ0CNi90Cu0DsDjH0qLT0NHkSDlcPKzlaXeD29ZqXyZTMlcskjJuuFD1sJ9X6d80VSTR/F+8Tc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957864; c=relaxed/simple; bh=tEKgoAhmzAz7RoqlYHi7jk1HqzHnEX108NgPQ8Yg+lw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dYHbPBrH/8XKJmCNDKpNXSYWJSQjfWeHnJs1oTZqx3eeyDgHeEGBYIa6Ywd1MxsHNW9l8BtT7LEkGq3vWQ3easPEgL97XL7Gk0OzQoOTn/ONLtxgvxxMkUEO9eNs1j5MTg5SDTN+xGh0d4L9QxdHnO4Lvk7iRK2fxIuN+Nnin00= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Se10ligm; arc=none smtp.client-ip=209.85.218.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Se10ligm" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-acb39c45b4eso1029701966b.1; Tue, 29 Apr 2025 13:17:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745957861; x=1746562661; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VXNwoUZ6hC22doJH7VQvPeDIdfTefCUIkaPi/UWgWfQ=; b=Se10ligmV8wluqeb5gCxGG3Xo9EhKgY6Xf6/ycJV9IqL+FZioKaKM5Eg7Ufsw/qUt6 E0cNY4UcjkPpyo7M2xyl5uuIu6mNKz0Tk4ItfKXQWFkIDnlkcgMVHkmJsKhEs2FRtaej FuAr/TflttGV5pQ8f1KLSXb8HXWJTuvWlqbcd8073C1554WDPW2JDbzNZMVhsl+S5lzb K/gq/GVtUgfZMz4jzsbDGu2LO4s7t3JSrs2xhXOXUdLkslr5PnEvsRpY9+cfaKDmCqxg tbntAAtS6PZqUvEUGUTIyInTRueIfOSmtAgdMZMKt03ImrlFjFG2p/cv3L69xwxnqOW3 BNzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745957861; x=1746562661; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VXNwoUZ6hC22doJH7VQvPeDIdfTefCUIkaPi/UWgWfQ=; b=UJZKCOFp13gPyBo8PxWIIASgYVBG5ptOue2qJVzIlrvlCi5yIjCMPfkUFfJLrQHg8e pvMQbSOv+T2DQOOq7xPQLyjcjMReGRIZj8iRVSW3WXhVu0LMoBS3P2eMFaAVkEaX+P44 w6zm43mCVurVjFcSeHs7+RmNzP9arrpoj53jcacJO+hj7W6aibuwuRcSdJX5DcgLsM6t p9suXE0LtcODLTYo+dRnADLXwnvb6f8Lm2h4QPEiwD74DaraLsSgCn//kS6IyS5j+1bY RWxYP0tY8+x8VhFtvwl+bHR1exUqQAv2YaEf/TPNLss7UyQ8yDbPobd3OzfrtMqiXl4Z TZDg== X-Forwarded-Encrypted: i=1; AJvYcCV/hWLLy+JadttBfXYbyyLri7i9YIDsxicSB54ByyYj+q6mv9YVhrwNiUqVlUqJd72QTB8rd8PL@vger.kernel.org, AJvYcCXklyBxR5QxsnYY7bbhyoJYjVlYhuG6ND1zkHk484tpmrCPcuioXWDYk4wTxVyjhwUvaoBSuxoWjyKkyL4=@vger.kernel.org X-Gm-Message-State: AOJu0YxwN90WKovFnnchXaI8hiosN/JSWk/wE8yXhAcxLyfHmVh2Bh0m XNEjIcWnfnSSoyXiH1taYKWcsZHUQrgXpn/qReXRMsgdpRojEkWL X-Gm-Gg: ASbGnctLpyHVeULxQ09ZJQ4hh/1hlfF+S/Ow+4+48Wj8smIyuNLl6xMAfxWZSEHA03o KvFJ6puUFqQ0ayCUHZ78xyRR6QCuAGYO7J7zO3cbekTJQ33XDN2BYVRi3XSVKybXa2rNn0zpuOw et7bLRg6PZIKWFilzQhe1ijyjnjVDtUct2Fo278NEhp6FBpNUQHtbCSWTmvE6BehafFd/AQOlNk AqYmXaIdR+3rp/E0ELfmsICi8pTYqXM4IUMx2C73eL3ez2MP2fRdq6Cc2gcup9wZe1OM52C7ZNk EID+K3bSZCWKUGUcmninrVRQ8HvFYLdbj86CUr/fubOGD52mMfhmnKy724uS2WReg/z4V9Wl7b2 5SHt8UMbY8maEoe5l6jc= X-Google-Smtp-Source: AGHT+IF6SoZiSBcqvJqtqnhcuPK8c4eYyjZcPtVja7HqyxdLlm55bR38u9H/rgAZEfd4XmNuMwCDlw== X-Received: by 2002:a17:907:9693:b0:ac2:9ac:a062 with SMTP id a640c23a62f3a-acedc5f1cb2mr65273666b.23.1745957860707; Tue, 29 Apr 2025 13:17:40 -0700 (PDT) Received: from localhost (dslb-002-205-023-067.002.205.pools.vodafone-ip.de. [2.205.23.67]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-acecdbbc6easm136021566b.88.2025.04.29.13.17.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 13:17:40 -0700 (PDT) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Kurt Kanzenbach Cc: Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net 10/11] net: dsa: b53: fix learning on VLAN unaware bridges Date: Tue, 29 Apr 2025 22:17:09 +0200 Message-ID: <20250429201710.330937-11-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250429201710.330937-1-jonas.gorski@gmail.com> References: <20250429201710.330937-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When VLAN filtering is off, we configure the switch to forward, but not learn on VLAN table misses. This effectively disables learning while not filtering. Fix this by switching to forward and learn. Setting the learning disable register will still control whether learning actually happens. Fixes: dad8d7c6452b ("net: dsa: b53: Properly account for VLAN filtering") Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli Tested-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_com= mon.c index 0a7749b416f7..a2c0b44fc6be 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -383,7 +383,7 @@ static void b53_enable_vlan(struct b53_device *dev, int= port, bool enable, vc4 |=3D VC4_ING_VID_VIO_DROP << VC4_ING_VID_CHECK_S; vc5 |=3D VC5_DROP_VTABLE_MISS; } else { - vc4 |=3D VC4_ING_VID_VIO_FWD << VC4_ING_VID_CHECK_S; + vc4 |=3D VC4_NO_ING_VID_CHK << VC4_ING_VID_CHECK_S; vc5 &=3D ~VC5_DROP_VTABLE_MISS; } =20 --=20 2.43.0 From nobody Sun Feb 8 06:04:34 2026 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 856A9278E7B; Tue, 29 Apr 2025 20:17:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957866; cv=none; b=pu5GJPKgFUpLQtuiGcdAxfv2mCUgtcj7tylvNB1OtFy2rzYXGvhuywXgvc18Mi2GA0s+iSFFajAHWVV4gSIm2XOx5LfUk7zcI48+2c8Yipa4YW2z7DIXhhFZvm28WCRmzQbFMwBBR9QU6Jjr7JTR0szXcGeiY/ElGz8jtsZ+HGA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745957866; c=relaxed/simple; bh=iKIi5IbtIQ6n2Yqby2/QwXaGpzinjrmagh0Zcb5dYlk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jVQ3qHWxMRN85jEtuAlhBezR9NrNP32Fh4xQeqcObUuiKFgZMjc3NVLFSOD9N35jkOlsGFcMeGwM6Xb4xO4YbM7BjwcJUWEWNRUvZ7yInYKgUfXnh9zh0XuY90DLFZlMCqK3hG1TmpFevn/gx59ELU77RnZT7XgY6jPkOkGcguA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ggkFFXMD; arc=none smtp.client-ip=209.85.208.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ggkFFXMD" Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-5eb92df4fcbso12536909a12.0; Tue, 29 Apr 2025 13:17:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745957863; x=1746562663; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=T5BNxoTrzKFeKZ63Ngyf0mjUdLNCnvkNWHzVfnwG0qI=; b=ggkFFXMDc2mhWBJ0kxVMKXD8zDKy9TIuayxpgbRsbjqxCcV+zoiUhUeCsFEaXbp70n NnOKwYdBBkylhxJp4R/pa/X15btz6wmdhZmw0Jd3LvCY0/L0KqiSOAmC62ujOs0OWLdb VjZ1qjNncQw6Eij89NE/ERWTas87R2t5Hn0bw1PFob+AxGrzXoGiPU8tgSm8uavXm3no KDlqpL0D9x7kJ6+Xn1rjZNK9PH6iff4qQ4+81zMDcSIFYGe7mktIHoCE+WZGCACqde8Y HF7qQwByGw9S3sCM4BTuXxOVCkJtMPOF0OTfTxDIZx12KwfCIZmFyXvp4nZ1XkjkP7um dz7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745957863; x=1746562663; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T5BNxoTrzKFeKZ63Ngyf0mjUdLNCnvkNWHzVfnwG0qI=; b=WgDVu1ySxBCw4XR8iAoykxQps/zhbxZ2/IqF7KGo81mglo1fM2O8xLKzYCRkGMhk3m E3hjfXxTD56BLEkZEgvJqCeIQ66t12xdVCkdC+7KNXa4Z86Ti+oFojUBbjHRFQqFFuWY Vw7dxXoyR4tYhBzokC7zywV5jLQ3td5GaxNTY/M0kKhnRUHsyPfl4wi+K8l+BYUGGL5P e/IrXyYF8Jw5fsHOwOwVbK1dcBRzMu1KjRwbtqm/u7G8Cry3xptpPxop+LtX+Mc2Wsy5 7YNqoYJ1sWc/5lm6engtECPQaqj8cYXpNjunWsM+kmR7yIeZB9BkyGpWkH7YZKd7OzKe HPpQ== X-Forwarded-Encrypted: i=1; AJvYcCU0Hk+aZ8+XWcqoTNw5vf5DS0fkyMfbHJOjBuQAY2RQC9M2hiwU1xy2/Yk2nwSBJFWsAwm0LW4P6leK/vs=@vger.kernel.org, AJvYcCXWJI9zA+R4gOVqC26gG3I0RsTaFgj/xjYES7GlKduUTLIrDN1KGbiBOeUDURHjPXhu1NadZeBE@vger.kernel.org X-Gm-Message-State: AOJu0Yw5kEdKj6NDm2ycVPgB0Ao4FChCy0Q9uAgpEdu/jY07FoS+/KBL n8raaTu7r04T3aIL0CqUbeZIGBZo4SpT8AqYIur+cpWjx86dD2E8 X-Gm-Gg: ASbGncs7YDkLGseKyexYdu3YH3ujG1kqS2TBTs6+Dt6gFaaK0+N4P3VSJruIdOTFPGh VTzxQMRhnVM3j44lCybNzEl+vLoQszVCuMmIqCQQuJSOIrt+K1fWkTxw+e8PS0DGRlQmjfHejep uh07VHoBH7rycfL3BkxAezMD4t5CNyslaRWR54OrgvmflBqGr7CeSKy87qSULOngv2NnqXY5g+o T4ShIsqBlyL9XE8kRt6eqN2suieW3uZqESITVSDTEwnT+k34tBzM9nff7fC1p3MJVx4Iz544L80 xLBEuk6/M+Et1mRo4d5qiX5+3v7yy3VWj4PoFNNx2hGQ4yL7rbrEhWdEdJoCiQQRyKYVsqUYiNv Rm3I7o1y6BPPmYEDhZck= X-Google-Smtp-Source: AGHT+IEg99rGpo8rsFAZS+LhmSX7lC7sLyGZu1gg/97KqcYbBE3PfMub95Xnuu1OY1tkrehDn27s8A== X-Received: by 2002:a17:906:c142:b0:ac8:1798:a796 with SMTP id a640c23a62f3a-acedc773ef7mr65205666b.54.1745957862650; Tue, 29 Apr 2025 13:17:42 -0700 (PDT) Received: from localhost (dslb-002-205-023-067.002.205.pools.vodafone-ip.de. [2.205.23.67]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5f70354633asm7773423a12.55.2025.04.29.13.17.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Apr 2025 13:17:42 -0700 (PDT) From: Jonas Gorski To: Florian Fainelli , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Russell King , Kurt Kanzenbach Cc: Florian Fainelli , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH net 11/11] net: dsa: b53: do not set learning and unicast/multicast on up Date: Tue, 29 Apr 2025 22:17:10 +0200 Message-ID: <20250429201710.330937-12-jonas.gorski@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250429201710.330937-1-jonas.gorski@gmail.com> References: <20250429201710.330937-1-jonas.gorski@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When a port gets set up, b53 disables learning and enables the port for flooding. This can undo any bridge configuration on the port. E.g. the following flow would disable learning on a port: $ ip link add br0 type bridge $ ip link set sw1p1 master br0 <- enables learning for sw1p1 $ ip link set br0 up $ ip link set sw1p1 up <- disables learning again Fix this by populating dsa_switch_ops::port_setup(), and set up initial config there. Fixes: f9b3827ee66c ("net: dsa: b53: Support setting learning on port") Signed-off-by: Jonas Gorski Reviewed-by: Florian Fainelli Tested-by: Florian Fainelli --- drivers/net/dsa/b53/b53_common.c | 21 +++++++++++++-------- drivers/net/dsa/b53/b53_priv.h | 1 + drivers/net/dsa/bcm_sf2.c | 1 + 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_com= mon.c index a2c0b44fc6be..9eb39cfa5fb2 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -578,6 +578,18 @@ static void b53_eee_enable_set(struct dsa_switch *ds, = int port, bool enable) b53_write16(dev, B53_EEE_PAGE, B53_EEE_EN_CTRL, reg); } =20 +int b53_setup_port(struct dsa_switch *ds, int port) +{ + struct b53_device *dev =3D ds->priv; + + b53_port_set_ucast_flood(dev, port, true); + b53_port_set_mcast_flood(dev, port, true); + b53_port_set_learning(dev, port, false); + + return 0; +} +EXPORT_SYMBOL(b53_setup_port); + int b53_enable_port(struct dsa_switch *ds, int port, struct phy_device *ph= y) { struct b53_device *dev =3D ds->priv; @@ -590,10 +602,6 @@ int b53_enable_port(struct dsa_switch *ds, int port, s= truct phy_device *phy) =20 cpu_port =3D dsa_to_port(ds, port)->cpu_dp->index; =20 - b53_port_set_ucast_flood(dev, port, true); - b53_port_set_mcast_flood(dev, port, true); - b53_port_set_learning(dev, port, false); - if (dev->ops->irq_enable) ret =3D dev->ops->irq_enable(dev, port); if (ret) @@ -724,10 +732,6 @@ static void b53_enable_cpu_port(struct b53_device *dev= , int port) b53_write8(dev, B53_CTRL_PAGE, B53_PORT_CTRL(port), port_ctrl); =20 b53_brcm_hdr_setup(dev->ds, port); - - b53_port_set_ucast_flood(dev, port, true); - b53_port_set_mcast_flood(dev, port, true); - b53_port_set_learning(dev, port, false); } =20 static void b53_enable_mib(struct b53_device *dev) @@ -2387,6 +2391,7 @@ static const struct dsa_switch_ops b53_switch_ops =3D= { .phy_read =3D b53_phy_read16, .phy_write =3D b53_phy_write16, .phylink_get_caps =3D b53_phylink_get_caps, + .port_setup =3D b53_setup_port, .port_enable =3D b53_enable_port, .port_disable =3D b53_disable_port, .support_eee =3D b53_support_eee, diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h index 4636e27fd1ee..2cf3e6a81e37 100644 --- a/drivers/net/dsa/b53/b53_priv.h +++ b/drivers/net/dsa/b53/b53_priv.h @@ -384,6 +384,7 @@ enum dsa_tag_protocol b53_get_tag_protocol(struct dsa_s= witch *ds, int port, enum dsa_tag_protocol mprot); void b53_mirror_del(struct dsa_switch *ds, int port, struct dsa_mall_mirror_tc_entry *mirror); +int b53_setup_port(struct dsa_switch *ds, int port); int b53_enable_port(struct dsa_switch *ds, int port, struct phy_device *ph= y); void b53_disable_port(struct dsa_switch *ds, int port); void b53_brcm_hdr_setup(struct dsa_switch *ds, int port); diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index fa2bf3fa9019..454a8c7fd7ee 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -1230,6 +1230,7 @@ static const struct dsa_switch_ops bcm_sf2_ops =3D { .resume =3D bcm_sf2_sw_resume, .get_wol =3D bcm_sf2_sw_get_wol, .set_wol =3D bcm_sf2_sw_set_wol, + .port_setup =3D b53_setup_port, .port_enable =3D bcm_sf2_port_setup, .port_disable =3D bcm_sf2_port_disable, .support_eee =3D b53_support_eee, --=20 2.43.0