From nobody Sat Feb 7 10:07:50 2026 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (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 846748F4A for ; Sun, 25 Jan 2026 00:14:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769300044; cv=none; b=MOEbwaqiXuXRWAni0xL4Hy8ODeSxKx2ZtEGW2RyEZoEfFPIPDvQk6+31MIrEm85Qp/1GWKMerekDKhsH6Gf3zjj4XXE0DZONjZvdXtaW6Ot5QMTkHYkF39X6rugcb/wI7HuSebgY5YTU1oK+dRnaUfqEoap5EjdZQcoX/UrXuJE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769300044; c=relaxed/simple; bh=qLMIT8Ws33pYlSoHCrt/RVncgm7aYhmOwxAU9uVlwHE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TsmkOzCvuByjbAWo0lHF0wJgC3wbK03YMibrERFLRW6IpSVkNxD1FTw9yOsRUq252g2LMFS3Ipno44oz8Ovasx67iH2GKjOeW6qZkT0uYecW7og1YVXznD4X4butPeQh0xA8bbNrpKKyhisjK+7H5shJPuI2ghm0ViyNyBXSVrs= 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=U13tpxLj; arc=none smtp.client-ip=209.85.210.171 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="U13tpxLj" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-8220bd582ddso1670641b3a.2 for ; Sat, 24 Jan 2026 16:14:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769300043; x=1769904843; 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=h7W4ETZqG8skHoTE538RFRAe6Lb7JM/auRjP6xeCdlU=; b=U13tpxLjjH0gBuuCXb+/dYjFOp1jezlCP+wiKjMwiOBog6HcAlMpEFkbQ/wWFnhDQy q8dY9J5yZSvdtvwjatM7vEGqSsFIMfTeZHEftNOwot6xYcvE5wrn9XXarStNA1315zc1 4zUo5TrhS0fEabLXQrM3Bfxd0ykTBwkPxkBQbmDRHHnSQ9Gmh2QXmz0EKkfdRROM3g+X jkWfcsICJLBWVi3e6uXekxKftaKEGc/gRY2nwjX63z6oRCm/VDNH2tt9U2PkL9u2miMO 9AFmwlKSQWOGRWAFPn5/MGCG9m97ZqE021nplXE1fQC7XIeLJEel0Qf1rqyjmsXHV7dz PXQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769300043; x=1769904843; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=h7W4ETZqG8skHoTE538RFRAe6Lb7JM/auRjP6xeCdlU=; b=vsXg8o2rHVNtvjD5P6cWZsgH92WUfvSGVG/VewQtQxmK1nGwnyOIRmg3+jr6XGHHRJ 0rSOmEj+h3jsckjk+KfU2FqP7HTfTt1ly6HlL7krpz2URqZ9XtE3W712hN0jD+WIjG7B /iaTaYa6u1EzEHiyxJYjCMpr/8HPDwA2aNIBZiIkokyxCLrBa0WLTzbeYL2HnfmGksO6 00Yz6/MOhKzLfODt3QL3aBlOHI2BWDbeN1YLen/eS/ShLPIO4A2N3I+mE/FQPQAhwLsR FMo9tx46j4ldXrNhkpBQ6casNw7T0gyS/t4SA0ZO1gyP7IqkwWOwuKmVWhPWNaPk2LaG NUjg== X-Forwarded-Encrypted: i=1; AJvYcCWHB9zH+icJRtA6gOz6IiGsuV9SAzolGdrY/2Mi7LVvRPwhGOYONBq8PhHxtRUz7EQyCu/plUTRWdhJuxk=@vger.kernel.org X-Gm-Message-State: AOJu0YxWEGeH5HPw8bXlukMVi84R/FY2WAXQV+KU2bVv7fLRkxGp4HNi xgSYPN7gJeYmobGBrQcNrFeeyh2mO7RgFQH7XyG0QQSP3T53c8i07u/C X-Gm-Gg: AZuq6aKPIFhNrmxRWJUUySMBRdDGvd+KPuVQw/k3A6RPvHQNGTyk75DtYsKCX+vjqle ckMnE/S5I4tnvzcKR9P7IyrFRzfNw+7bjDHuUlfnMdE+oq+h2n0Q+0DuW00awxyV1MVPs5pt8jl 1CSXrr8C2wx/N2NrBykXKPMCurNzQ1ab0ZzxZ354fzvLy4lNRcwqxuY+GwT9QZAlkP+sGxo6o1q ZSepM5JbUghPYu/vgOqyEwzrEibBatHDJVgBnL+lw5uLb0Dhv5RdfcTyW54T5gr8nB7ALrk4GZ4 xrZ8VXdUJ0Kt2URKqOuJNhnSYc4/2xb/PY5F3lLHoXOEizhgLKKkm7kN37suG8Miq2ZdQut/o/j 5REFhnn5kbvfZe6jCgNFgCdrwQVBjKrV7XwDvlV9ii/s3kaF3GcnF6aRxyRd+MY2l4dcFe8YbAY 4LeFzQZ8Cu4E2kRbs1tgeLYKR9z1zWmvMh6pTEWV2ZAdThhGtJ0wdZqQ== X-Received: by 2002:a05:6a00:b51:b0:81f:852b:a93a with SMTP id d2e1a72fcca58-8234119f794mr208832b3a.2.1769300042849; Sat, 24 Jan 2026 16:14:02 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8231873ec59sm5683488b3a.53.2026.01.24.16.13.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 24 Jan 2026 16:14:02 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Russell King , linux-kernel@vger.kernel.org Subject: [PATCH net-next v3 1/3] net: dsa: tag_yt921x: fix priority support Date: Sun, 25 Jan 2026 08:13:22 +0800 Message-ID: <20260125001328.3784006-2-mmyangfl@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260125001328.3784006-1-mmyangfl@gmail.com> References: <20260125001328.3784006-1-mmyangfl@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 packet priority is embedded in the rx tag. It defaults to 0, but adding DCB support to the switch driver will break the tag driver by setting it to non-zero. Signed-off-by: David Yang --- net/dsa/tag_yt921x.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/net/dsa/tag_yt921x.c b/net/dsa/tag_yt921x.c index 6bbfd42dc5df..b93715a057c7 100644 --- a/net/dsa/tag_yt921x.c +++ b/net/dsa/tag_yt921x.c @@ -17,7 +17,8 @@ * 2: Rx Port * 15b: Rx Port Valid * 14b-11b: Rx Port - * 10b-0b: Cmd? + * 10b-8b: Priority + * 7b-0b: Cmd * 2: Tx Port(s) * 15b: Tx Port(s) Valid * 10b-0b: Tx Port(s) Mask @@ -33,7 +34,8 @@ =20 #define YT921X_TAG_PORT_EN BIT(15) #define YT921X_TAG_RX_PORT_M GENMASK(14, 11) -#define YT921X_TAG_RX_CMD_M GENMASK(10, 0) +#define YT921X_TAG_RX_PRIO_M GENMASK(10, 8) +#define YT921X_TAG_RX_CMD_M GENMASK(7, 0) #define YT921X_TAG_RX_CMD(x) FIELD_PREP(YT921X_TAG_RX_CMD_M, (x)) #define YT921X_TAG_RX_CMD_FORWARDED 0x80 #define YT921X_TAG_RX_CMD_UNK_UCAST 0xb2 @@ -98,6 +100,8 @@ yt921x_tag_rcv(struct sk_buff *skb, struct net_device *n= etdev) return NULL; } =20 + skb->priority =3D FIELD_GET(YT921X_TAG_RX_PRIO_M, rx); + cmd =3D FIELD_GET(YT921X_TAG_RX_CMD_M, rx); switch (cmd) { case YT921X_TAG_RX_CMD_FORWARDED: --=20 2.51.0 From nobody Sat Feb 7 10:07:50 2026 Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) (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 C6C79405F7 for ; Sun, 25 Jan 2026 00:14:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769300049; cv=none; b=uH71/Rg/nw8ZZLOQLY8VmWeSd1HDpS1Dvass/3sUr0FNX6QRK/oZVCiL6lEX+I1rOm3AGI1oK9nCChdKO2szhSBG3t6UPh8wzN0LZKJRy0GKxRjkmyQvihN8Ow3cpBycc089Q/j+DAZEXnYbLIuVdNUC4Abs0Zi5Saa2+vCNlDs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769300049; c=relaxed/simple; bh=iZJach6s8qYLr3vpM42GbXz2jpGMsX7usKV8PgWY/7M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sCZTfztQr4yBvdYhEziKDlM/Y2q2HLGyM6o3m6OJSFKihYIV0EJXTR4GiOaoRSuK2juslVgE+6WcwBYbGDbeDjBIQJ2Va5jHYfA4yMlO+eDT47wEd15lOXqzIB4JBCUnRNE+hNhuY28wtvKNh7V0wqS25vCnkU7r24LU8GgiaqA= 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=I1xz5idX; arc=none smtp.client-ip=209.85.210.177 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="I1xz5idX" Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-81db1530173so1745473b3a.1 for ; Sat, 24 Jan 2026 16:14:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769300047; x=1769904847; 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=hLHzhuxm7a5X2Q49ADNkLZ5qYk8a4yH9AKsfa8IpJ8M=; b=I1xz5idXT1APTVI8Pzd5IY9kVrQIa/rMj6byotHR9sGlFOjP8kpK/bkxr3zTe2fxBZ h6F0nawGYsVwhZqQIqw5aqUUo6o4ZXlKnHN2TeEetbZEaOrEG66DDTRhkqz53KA4YiNn IDgUQ8uVUFEijITjgB4WGgUbFYO8RCkPrHIKjCt8EuFdkspuTKr5oROKDxr0irw6ZJQu mD+tgVDFksCZ/7Iu+mP4fuibuheuImSNkKj1q+pDMsaUZlpVonkfw9l06/qo2+MP68NL SIY/ntOd7vwWH3Pl3o7hav/QPfxfWWkQTKqwyidYD8loWjJBnUGW8BI86G7mxXJV6XU9 EBsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769300047; x=1769904847; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hLHzhuxm7a5X2Q49ADNkLZ5qYk8a4yH9AKsfa8IpJ8M=; b=UCh1WYir4tPFkwrRnydK32oStiF4WTx9VSCfsEUh+pADhG4muQDLImhDiXzRGyUfGP AjQuOBdd9is9N15ec+lHucnsCtC2B8AdfCBo65Oqb7msJ9qRxM2EX2ZOnBItwD4CyXby saFOh+2iwOOu7H40XvQina9QAW9t+TdUkVA4OT1UwVYcwTRKCjYVJkJGMPzCg2/cwPEz OCunW/BFESbDMfLqOGKeoyWLb6vYNNijyheUGC2V5mPkftx3//YW2HlnCszXf5FzTJ7p /cnOvtYoej56CFnJe/Mz3IPo5nChIoOZPaedgbyPVgNtjfchQnZlcb5IXO2y1gSfLdlW 8tNw== X-Forwarded-Encrypted: i=1; AJvYcCWP8VAp3O3E8xWGjBXRW6bVyakBZ8e66crSgSBiRrx8CATDcukDQuGJBmjz0lmB/JgD1yIKYo7dGGzbl5Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yw9iAwSse8FZ/oMhIlmeDma8UbehoXyCt4l1RTIbn2UZf18nVLF AXzwjHPldy4b4XXzcQNREBntFWsGgk+dXAsrGyvJMDVpg0es5n7WH1gF X-Gm-Gg: AZuq6aLQ80d0GyPqVMTTTO4q3jExNl4XrecuhMvMsz+/L7Hqp2KUvasOH0DbuFzh9Al +lhbj203KmctEsDHQEUUxDlvVmcTHI7p0LLyJBQ1iK1FxdcfN7NWBSdCPI4yQK5hMk1SE7t5qWx PjM647LqYa9t9QPVBqLs8xdr8nvfpwNpeWUl0wLEbgM4as4Sq7aUmj3AUGNDCiUuapIVGXpn1bE naRXIwWmmfsV8FSp00RtrahYEOtWyPVhNM42QRM5uzCcxe2cTb3Y/CLhdfStgQ373LfHYexY+xR WHMVDFGBdfy4EnJLN0AswjQzHHEx4lcx8sqD5TU8cCFXYO0KSkgR3DMwttEMDG4j4IgB9wpvYWO K9yfvdj87pxqvuTN5l3NXm5/rlhpEqFM877W1ALsNb9V7jDei7UV6ZT4ZH+5Q6nVUqLuBMl1aPN EzBcllPC7erYuEypL55A2jyShNWJtJeaC2vmIBAMEW7Clu3d0XRNpe1g== X-Received: by 2002:a05:6a00:23ca:b0:81e:af19:34b8 with SMTP id d2e1a72fcca58-82341286a05mr171970b3a.43.1769300047047; Sat, 24 Jan 2026 16:14:07 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8231873ec59sm5683488b3a.53.2026.01.24.16.14.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 24 Jan 2026 16:14:06 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Russell King , linux-kernel@vger.kernel.org Subject: [PATCH net-next v3 2/3] net: dsa: yt921x: Refactor VLAN awareness setting Date: Sun, 25 Jan 2026 08:13:23 +0800 Message-ID: <20260125001328.3784006-3-mmyangfl@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260125001328.3784006-1-mmyangfl@gmail.com> References: <20260125001328.3784006-1-mmyangfl@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" Create a helper function to centralize the logic for enabling and disabling VLAN awareness on a port. Signed-off-by: David Yang --- drivers/net/dsa/yt921x.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/drivers/net/dsa/yt921x.c b/drivers/net/dsa/yt921x.c index a4b346ddf8dd..880e3b5966f8 100644 --- a/drivers/net/dsa/yt921x.c +++ b/drivers/net/dsa/yt921x.c @@ -1768,6 +1768,18 @@ yt921x_dsa_port_mdb_add(struct dsa_switch *ds, int p= ort, return res; } =20 +static int +yt921x_port_set_vlan_aware(struct yt921x_priv *priv, int port, bool vlan_a= ware) +{ + u32 ctrl; + + if (!vlan_aware) + ctrl =3D 0; + else + ctrl =3D YT921X_PORT_IGR_TPIDn_CTAG(0); + return yt921x_reg_write(priv, YT921X_PORTn_IGR_TPID(port), ctrl); +} + static int yt921x_port_set_pvid(struct yt921x_priv *priv, int port, u16 vid) { @@ -1818,13 +1830,7 @@ yt921x_vlan_filtering(struct yt921x_priv *priv, int = port, bool vlan_filtering) return res; =20 /* Turn on / off VLAN awareness */ - mask =3D YT921X_PORT_IGR_TPIDn_CTAG_M; - if (!vlan_filtering) - ctrl =3D 0; - else - ctrl =3D YT921X_PORT_IGR_TPIDn_CTAG(0); - res =3D yt921x_reg_update_bits(priv, YT921X_PORTn_IGR_TPID(port), - mask, ctrl); + res =3D yt921x_port_set_vlan_aware(priv, port, vlan_filtering); if (res) return res; =20 @@ -2021,8 +2027,7 @@ static int yt921x_userport_standalone(struct yt921x_p= riv *priv, int port) return res; =20 /* Turn off VLAN awareness */ - mask =3D YT921X_PORT_IGR_TPIDn_CTAG_M; - res =3D yt921x_reg_clear_bits(priv, YT921X_PORTn_IGR_TPID(port), mask); + res =3D yt921x_port_set_vlan_aware(priv, port, false); if (res) return res; =20 --=20 2.51.0 From nobody Sat Feb 7 10:07:50 2026 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.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 E027F1632C8 for ; Sun, 25 Jan 2026 00:25:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769300757; cv=none; b=agYTItIuNxMS16mET0l8THaHrS70FhAQF/wQQ0V0q4PagfMOyw5QHVIQDrvnz40heBtHNO0Ad1mZh1n5lD+fUOrN57FFkmW/0atGDL3plc71qSvsbplOHJrX2I5jUaooWxIbwtDAQ8trnabR6O4rJiAojGmSi+2jXmNm3IWJOY8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769300757; c=relaxed/simple; bh=Cp9tcEDvZY+rCSt5oJdKKqf8fujxVTz3AeZXH62Fda0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=m5GoimyGwppNsoBxK+zqb/ZSu73b9wlgs9TLvHKng5u8As2cOwhZk0GI5hpv7ARHdTuEOsLDOWtkPa5cJRQrnuT3mPiXv2ZYMeHMw062mAo06ovSp7BWXCPLtR/h5adVxViUs0WbQ49g85cp4Nu83ErwwAV1rxK+jq9ILvCAmas= 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=Wx6r08/l; arc=none smtp.client-ip=209.85.216.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="Wx6r08/l" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-352f60d6c2fso2337830a91.1 for ; Sat, 24 Jan 2026 16:25:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769300755; x=1769905555; 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=YWjvS+hgkHY1R8yWAiQX8zpJxH14skCSIGHxJEj8U/E=; b=Wx6r08/l9QGuQFlQm9Hj7Dd7n0RM9RcVrJG9RCmP9hQs5r9TAnn9tNZ772e16CBG5X q8BogMh6OSg/Z3lvFhhCXBlEBsFM5kzywr1fZpC1FNoTbaPfRN0x4TP2ovByNa2mEnk3 BpaxW7uoXMJRn0bNCa7Xnmt3pwVZOF5xAPfNNWtHy/yOY2rfZiyX4xJ/L637zeEn/WhV NdDbUW9/pybmhoc6mILmxGV1SXE7YmA2TNdKaWeU18BPcb7Ect4QljWTo+Ziq2RIr5QJ 8pZYT/rx6nuU5PPy2dLRbPYlmHaBGTEDryNNivzvNfM7bT/FP6pqeJaxr5FrzBOxnpSR 7LOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769300755; x=1769905555; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YWjvS+hgkHY1R8yWAiQX8zpJxH14skCSIGHxJEj8U/E=; b=oHmSSxf1IHQhhDjI69GKhqelhPudovi3LfOZ5JCQgiXvm/QnkGWgXaFplI0KV8keW8 DiMoSvAmlir7nLgUM9LG1Y1d9Sm0l14IXkKL1GG/yUSXWtegJxez9KR2stC9bZ3Nru+X osIDUSIuXWsynSIQbhSCuT+U7GDxMhbZzisOmrScE/Xjz2mw/fGHUwgN7F1qf9BqRrfg WsnfVZAXze4x30TxqK+IPrn0r94xi354aQxb0z6GngVs8bvqek2WqoVekvHDRgYDIdpk wK07WgHal2oHTlRK+GDdPrCC1ZclD7PprXMCVxF2bph29L65dSYcMUUCZXJ9BS90ntBB 8w4Q== X-Forwarded-Encrypted: i=1; AJvYcCU7VcbKR8fXfyHoXenRF5Dg5ox6kBbXg+I3rzn17DeqqOcnmK6cuHzto6nDxqge9MhLxPI5+llvxpCZFUU=@vger.kernel.org X-Gm-Message-State: AOJu0YxGV8dRfozg/bEAp/c+IicGaDoO4UcVZOix+i5T9qA8YYIFDID9 HPlKU8Cc1+bRFusHJJ/fKFt55FcE8RMJqdXEP1tFgmPlxPX+63FBUCWGF6fZJQ== X-Gm-Gg: AZuq6aJACbyO/771sUJ8J2uPpNnKsQsrOgecslKnqXAVl7WJBN406I6j6wJ8ny/LhnM kiTOaQ9b95foCBYc3Eav94oUcsv9IwvcA+JOXgvnJay3kpuPOuWvq5JtS+Iac1/VmQGnpKHYlHf dBpGvYlUNlnvPmYImi+S5nEPfsH32CC2ycw7tvNxlmpvuefTA1s9EaH5d84wYpi0fnYfwP/jg11 DUxJ7hDYE31It0CFUjPqMdDz+uoIe5H/nQevpXlNCUfI0DwkIuRD/n94L9+D208EMnR76ubwq7l hA96N7ufPBDYjQHKIo5SSt9GmEUIlVbMlbV8aLSCSEZ/227XT9uqmECXWZ3SVkMZEGxzFmh6/X7 GMDnBO4nqEbCFma3QBNsVSoFLi56WYNcZdkIV2CuRKsatQq+3IX3Fjj8NPItxYtEVDyEmmXz6KT RuYoMT1KVDZEqIgXGfRTNxIpAsuadPn+smryiJy+3UZoCFlOvcdgD/8w== X-Received: by 2002:a17:90b:50c7:b0:340:bfcd:6afa with SMTP id 98e67ed59e1d1-353c40b3808mr270430a91.8.1769300755204; Sat, 24 Jan 2026 16:25:55 -0800 (PST) Received: from d.home.mmyangfl.tk ([2001:19f0:8001:1644:5400:5ff:fe3e:12b1]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c635a1307f3sm5027274a12.3.2026.01.24.16.25.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 24 Jan 2026 16:25:54 -0800 (PST) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Russell King , linux-kernel@vger.kernel.org Subject: [PATCH net-next v3 3/3] net: dsa: yt921x: Add DCB/QoS support Date: Sun, 25 Jan 2026 08:24:48 +0800 Message-ID: <20260125002531.3787314-1-mmyangfl@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260125001328.3784006-1-mmyangfl@gmail.com> References: <20260125001328.3784006-1-mmyangfl@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" Set up global DSCP/PCP priority mappings and add related DCB methods. Signed-off-by: David Yang --- drivers/net/dsa/Kconfig | 1 + drivers/net/dsa/yt921x.c | 239 ++++++++++++++++++++++++++++++++++++++- drivers/net/dsa/yt921x.h | 52 +++++++-- 3 files changed, 281 insertions(+), 11 deletions(-) diff --git a/drivers/net/dsa/Kconfig b/drivers/net/dsa/Kconfig index 7eb301fd987d..24c37cbf70d7 100644 --- a/drivers/net/dsa/Kconfig +++ b/drivers/net/dsa/Kconfig @@ -158,6 +158,7 @@ config NET_DSA_VITESSE_VSC73XX_PLATFORM config NET_DSA_YT921X tristate "Motorcomm YT9215 ethernet switch chip support" select NET_DSA_TAG_YT921X + select NET_IEEE8021Q_HELPERS if DCB help This enables support for the Motorcomm YT9215 ethernet switch chip. diff --git a/drivers/net/dsa/yt921x.c b/drivers/net/dsa/yt921x.c index 880e3b5966f8..c2a1bc3729b4 100644 --- a/drivers/net/dsa/yt921x.c +++ b/drivers/net/dsa/yt921x.c @@ -8,6 +8,7 @@ * Copyright (c) 2025 David Yang */ =20 +#include #include #include #include @@ -18,8 +19,11 @@ #include #include #include +#include =20 #include +#include +#include =20 #include "yt921x.h" =20 @@ -1773,8 +1777,11 @@ yt921x_port_set_vlan_aware(struct yt921x_priv *priv,= int port, bool vlan_aware) { u32 ctrl; =20 + /* Abuse SVLAN for PCP parsing without polluting the FDB - it just works + * despite YT921X_VLAN_CTRL_SVLAN_EN never being set + */ if (!vlan_aware) - ctrl =3D 0; + ctrl =3D YT921X_PORT_IGR_TPIDn_STAG(0); else ctrl =3D YT921X_PORT_IGR_TPIDn_CTAG(0); return yt921x_reg_write(priv, YT921X_PORTn_IGR_TPID(port), ctrl); @@ -2396,6 +2403,123 @@ yt921x_dsa_port_stp_state_set(struct dsa_switch *ds= , int port, u8 state) port, res); } =20 +static int __maybe_unused +yt921x_dsa_port_get_default_prio(struct dsa_switch *ds, int port) +{ + struct yt921x_priv *priv =3D to_yt921x_priv(ds); + u32 val; + int res; + + mutex_lock(&priv->reg_lock); + res =3D yt921x_reg_read(priv, YT921X_PORTn_QOS(port), &val); + mutex_unlock(&priv->reg_lock); + + if (res) + return res; + + return FIELD_GET(YT921X_PORT_QOS_PRIO_M, val); +} + +static int __maybe_unused +yt921x_dsa_port_set_default_prio(struct dsa_switch *ds, int port, u8 prio) +{ + struct yt921x_priv *priv =3D to_yt921x_priv(ds); + u32 mask; + u32 ctrl; + int res; + + if (prio >=3D YT921X_PRIO_NUM) + return -EINVAL; + + mutex_lock(&priv->reg_lock); + mask =3D YT921X_PORT_QOS_PRIO_M | YT921X_PORT_QOS_PRIO_EN; + ctrl =3D YT921X_PORT_QOS_PRIO(prio) | YT921X_PORT_QOS_PRIO_EN; + res =3D yt921x_reg_update_bits(priv, YT921X_PORTn_QOS(port), mask, ctrl); + mutex_unlock(&priv->reg_lock); + + return res; +} + +static int __maybe_unused appprios_cmp(const void *a, const void *b) +{ + return ((const u8 *)b)[1] - ((const u8 *)a)[1]; +} + +static int __maybe_unused +yt921x_dsa_port_get_apptrust(struct dsa_switch *ds, int port, u8 *sel, + int *nselp) +{ + struct yt921x_priv *priv =3D to_yt921x_priv(ds); + u8 appprios[2][2] =3D {}; + int nsel; + u32 val; + int res; + + mutex_lock(&priv->reg_lock); + res =3D yt921x_reg_read(priv, YT921X_PORTn_PRIO_ORD(port), &val); + mutex_unlock(&priv->reg_lock); + + if (res) + return res; + + appprios[0][0] =3D IEEE_8021QAZ_APP_SEL_DSCP; + appprios[0][1] =3D (val >> (3 * YT921X_APP_SEL_DSCP)) & 7; + appprios[1][0] =3D DCB_APP_SEL_PCP; + appprios[1][1] =3D (val >> (3 * YT921X_APP_SEL_CVLAN_PCP)) & 7; + sort(appprios, ARRAY_SIZE(appprios), sizeof(appprios[0]), appprios_cmp, + NULL); + + nsel =3D 0; + for (int i =3D 0; i < ARRAY_SIZE(appprios) && appprios[i][1]; i++) { + sel[nsel] =3D appprios[i][0]; + nsel++; + } + *nselp =3D nsel; + + return 0; +} + +static int __maybe_unused +yt921x_dsa_port_set_apptrust(struct dsa_switch *ds, int port, const u8 *se= l, + int nsel) +{ + struct yt921x_priv *priv =3D to_yt921x_priv(ds); + struct device *dev =3D to_device(priv); + u32 ctrl; + int res; + + if (nsel > YT921X_APP_SEL_NUM) + return -EINVAL; + + /* Order 0 means disabled - except for port default prio */ + ctrl =3D 0; + for (int i =3D 0; i < nsel; i++) { + switch (sel[i]) { + case IEEE_8021QAZ_APP_SEL_DSCP: + ctrl |=3D YT921X_PORT_PRIO_ORD_APPm(YT921X_APP_SEL_DSCP, + 7 - i); + break; + case DCB_APP_SEL_PCP: + ctrl |=3D YT921X_PORT_PRIO_ORD_APPm(YT921X_APP_SEL_CVLAN_PCP, + 7 - i); + ctrl |=3D YT921X_PORT_PRIO_ORD_APPm(YT921X_APP_SEL_SVLAN_PCP, + 7 - i); + break; + default: + dev_err(dev, + "Invalid apptrust selector (at %d-th). Supported: dscp, pcp\n", + i + 1); + return -EOPNOTSUPP; + } + } + + mutex_lock(&priv->reg_lock); + res =3D yt921x_reg_write(priv, YT921X_PORTn_PRIO_ORD(port), ctrl); + mutex_unlock(&priv->reg_lock); + + return res; +} + static int yt921x_port_down(struct yt921x_priv *priv, int port) { u32 mask; @@ -2721,6 +2845,13 @@ static int yt921x_port_setup(struct yt921x_priv *pri= v, int port) if (res) return res; =20 + /* Clear prio order (even if DCB is not enabled) to avoid unsolicited + * priorities + */ + res =3D yt921x_reg_write(priv, YT921X_PORTn_PRIO_ORD(port), 0); + if (res) + return res; + if (dsa_is_cpu_port(ds, port)) { /* Egress of CPU port is supposed to be completely controlled * via tagging, so set to oneway isolated (drop all packets @@ -2764,6 +2895,55 @@ static int yt921x_dsa_port_setup(struct dsa_switch *= ds, int port) return res; } =20 +/* Not "port" - DSCP mapping is global */ +static int __maybe_unused +yt921x_dsa_port_get_dscp_prio(struct dsa_switch *ds, int port, u8 dscp) +{ + struct yt921x_priv *priv =3D to_yt921x_priv(ds); + u32 val; + int res; + + mutex_lock(&priv->reg_lock); + res =3D yt921x_reg_read(priv, YT921X_IPM_DSCPn(dscp), &val); + mutex_unlock(&priv->reg_lock); + + if (res) + return res; + + return FIELD_GET(YT921X_IPM_PRIO_M, val); +} + +static int __maybe_unused +yt921x_dsa_port_del_dscp_prio(struct dsa_switch *ds, int port, u8 dscp, u8= prio) +{ + struct yt921x_priv *priv =3D to_yt921x_priv(ds); + int res; + + mutex_lock(&priv->reg_lock); + res =3D yt921x_reg_write(priv, YT921X_IPM_DSCPn(dscp), + YT921X_IPM_PRIO(IEEE8021Q_TT_BK)); + mutex_unlock(&priv->reg_lock); + + return res; +} + +static int __maybe_unused +yt921x_dsa_port_add_dscp_prio(struct dsa_switch *ds, int port, u8 dscp, u8= prio) +{ + struct yt921x_priv *priv =3D to_yt921x_priv(ds); + int res; + + if (prio >=3D YT921X_PRIO_NUM) + return -EINVAL; + + mutex_lock(&priv->reg_lock); + res =3D yt921x_reg_write(priv, YT921X_IPM_DSCPn(dscp), + YT921X_IPM_PRIO(prio)); + mutex_unlock(&priv->reg_lock); + + return res; +} + static int yt921x_edata_wait(struct yt921x_priv *priv, u32 *valp) { u32 val =3D YT921X_EDATA_DATA_IDLE; @@ -2903,6 +3083,43 @@ static int yt921x_chip_reset(struct yt921x_priv *pri= v) return 0; } =20 +static int __maybe_unused yt921x_chip_setup_qos(struct yt921x_priv *priv) +{ + u32 ctrl; + int res; + + /* 802.1Q QoS to internal priorities */ + for (u8 pcp =3D 0; pcp < 8; pcp++) + for (u8 dei =3D 0; dei < 2; dei++) { + ctrl =3D YT921X_IPM_PRIO(pcp); + if (dei) + ctrl |=3D YT921X_IPM_DROP_PRIO(3); + + for (u8 svlan =3D 0; svlan < 2; svlan++) { + u32 reg =3D YT921X_IPM_PCPn(svlan, dei, pcp); + + res =3D yt921x_reg_write(priv, reg, ctrl); + if (res) + return res; + } + } + + /* DSCP to internal priorities */ + for (u8 dscp =3D 0; dscp < DSCP_MAX; dscp++) { + int prio =3D ietf_dscp_to_ieee8021q_tt(dscp); + + if (prio < 0) + return prio; + + res =3D yt921x_reg_write(priv, YT921X_IPM_DSCPn(dscp), + YT921X_IPM_PRIO(prio)); + if (res) + return res; + } + + return 0; +} + static int yt921x_chip_setup(struct yt921x_priv *priv) { struct dsa_switch *ds =3D &priv->ds; @@ -2983,6 +3200,12 @@ static int yt921x_chip_setup(struct yt921x_priv *pri= v) if (res) return res; =20 +#if IS_ENABLED(CONFIG_DCB) + res =3D yt921x_chip_setup_qos(priv); + if (res) + return res; +#endif + /* Miscellaneous */ res =3D yt921x_reg_set_bits(priv, YT921X_SENSOR, YT921X_SENSOR_TEMP); if (res) @@ -3092,10 +3315,23 @@ static const struct dsa_switch_ops yt921x_dsa_switc= h_ops =3D { .port_mst_state_set =3D yt921x_dsa_port_mst_state_set, .vlan_msti_set =3D yt921x_dsa_vlan_msti_set, .port_stp_state_set =3D yt921x_dsa_port_stp_state_set, +#if IS_ENABLED(CONFIG_DCB) + /* dcb */ + .port_get_default_prio =3D yt921x_dsa_port_get_default_prio, + .port_set_default_prio =3D yt921x_dsa_port_set_default_prio, + .port_get_apptrust =3D yt921x_dsa_port_get_apptrust, + .port_set_apptrust =3D yt921x_dsa_port_set_apptrust, +#endif /* port */ .get_tag_protocol =3D yt921x_dsa_get_tag_protocol, .phylink_get_caps =3D yt921x_dsa_phylink_get_caps, .port_setup =3D yt921x_dsa_port_setup, +#if IS_ENABLED(CONFIG_DCB) + /* dscp */ + .port_get_dscp_prio =3D yt921x_dsa_port_get_dscp_prio, + .port_del_dscp_prio =3D yt921x_dsa_port_del_dscp_prio, + .port_add_dscp_prio =3D yt921x_dsa_port_add_dscp_prio, +#endif /* chip */ .setup =3D yt921x_dsa_setup, }; @@ -3162,6 +3398,7 @@ static int yt921x_mdio_probe(struct mdio_device *mdio= dev) ds =3D &priv->ds; ds->dev =3D dev; ds->assisted_learning_on_cpu_port =3D true; + ds->dscp_prio_mapping_is_global =3D true; ds->priv =3D priv; ds->ops =3D &yt921x_dsa_switch_ops; ds->ageing_time_min =3D 1 * 5000; diff --git a/drivers/net/dsa/yt921x.h b/drivers/net/dsa/yt921x.h index bacd4ccaa8e5..845a146deb75 100644 --- a/drivers/net/dsa/yt921x.h +++ b/drivers/net/dsa/yt921x.h @@ -269,6 +269,35 @@ #define YT921X_TPID_EGRn(x) (0x100300 + 4 * (x)) /* [0, 3] */ #define YT921X_TPID_EGR_TPID_M GENMASK(15, 0) =20 +#define YT921X_IPM_DSCPn(n) (0x180000 + 4 * (n)) /* Internal Priority Map= */ +#define YT921X_IPM_PCPn(map, dei, pcp) (0x180100 + 4 * (16 * (map) + 8 * (= dei) + (pcp))) +#define YT921X_IPM_PRIO_M GENMASK(4, 2) +#define YT921X_IPM_PRIO(x) FIELD_PREP(YT921X_IPM_PRIO_M, (x)) /* High= er first */ +#define YT921X_IPM_DROP_PRIO_M GENMASK(1, 0) +#define YT921X_IPM_DROP_PRIO(x) FIELD_PREP(YT921X_IPM_DROP_PRIO_M, (x)= ) /* Drop higher first */ +#define YT921X_PORTn_QOS(port) (0x180180 + 4 * (port)) +#define YT921X_PORT_QOS_CVLAN_PRIO_MAP_ID BIT(5) +#define YT921X_PORT_QOS_SVLAN_PRIO_MAP_ID BIT(4) +#define YT921X_PORT_QOS_PRIO_M GENMASK(3, 1) +#define YT921X_PORT_QOS_PRIO(x) FIELD_PREP(YT921X_PORT_QOS_PRIO_M, (x)) +#define YT921X_PORT_QOS_PRIO_EN BIT(0) +#define YT921X_PORTn_PRIO_ORD(port) (0x180200 + 4 * (port)) +#define YT921X_PORT_PRIO_ORD_APPm_M(m) GENMASK(3 * (m) + 2, 3 * (m)) +#define YT921X_PORT_PRIO_ORD_APPm(m, x) ((x) << (3 * (m))) /* Higher fi= rst */ + +enum yt921x_app_selector { + YT921X_APP_SEL_MAC_SA, + YT921X_APP_SEL_MAC_DA, + YT921X_APP_SEL_VID, + YT921X_APP_SEL_ACL, + YT921X_APP_SEL_DSCP, + YT921X_APP_SEL_CVLAN_PCP, + YT921X_APP_SEL_SVLAN_PCP, + /* The physical port, i.e. YT921X_PORT_QOS_PRIO */ + YT921X_APP_SEL_PORT, + YT921X_APP_SEL_NUM +}; + #define YT921X_VLAN_IGR_FILTER 0x180280 #define YT921X_VLAN_IGR_FILTER_PORTn_BYPASS_IGMP(port) BIT((port) + 11) #define YT921X_VLAN_IGR_FILTER_PORTn(port) BIT(port) @@ -337,7 +366,7 @@ #define YT921X_FDB_OUT0 0x1804b0 #define YT921X_FDB_IO0_ADDR_HI4_M GENMASK(31, 0) #define YT921X_FDB_OUT1 0x1804b4 -#define YT921X_FDB_IO1_EGR_INT_PRI_EN BIT(31) +#define YT921X_FDB_IO1_EGR_PRIO_EN BIT(31) #define YT921X_FDB_IO1_STATUS_M GENMASK(30, 28) #define YT921X_FDB_IO1_STATUS(x) FIELD_PREP(YT921X_FDB_IO1_STATUS_M, (= x)) #define YT921X_FDB_IO1_STATUS_INVALID YT921X_FDB_IO1_STATUS(0) @@ -356,9 +385,9 @@ #define YT921X_FDB_IO2_EGR_PORTS(x) FIELD_PREP(YT921X_FDB_IO2_EGR_PORT= S_M, (x)) #define YT921X_FDB_IO2_EGR_DROP BIT(17) #define YT921X_FDB_IO2_COPY_TO_CPU BIT(16) -#define YT921X_FDB_IO2_IGR_INT_PRI_EN BIT(15) -#define YT921X_FDB_IO2_INT_PRI_M GENMASK(14, 12) -#define YT921X_FDB_IO2_INT_PRI(x) FIELD_PREP(YT921X_FDB_IO2_INT_PRI_M,= (x)) +#define YT921X_FDB_IO2_IGR_PRIO_EN BIT(15) +#define YT921X_FDB_IO2_PRIO_M GENMASK(14, 12) +#define YT921X_FDB_IO2_PRIO(x) FIELD_PREP(YT921X_FDB_IO2_PRIO_M, (x)) #define YT921X_FDB_IO2_NEW_VID_M GENMASK(11, 0) #define YT921X_FDB_IO2_NEW_VID(x) FIELD_PREP(YT921X_FDB_IO2_NEW_VID_M,= (x)) #define YT921X_FILTER_UNK_UCAST 0x180508 @@ -406,8 +435,9 @@ #define YT921X_VLAN_CTRL_FID_M GENMASK_ULL(34, 23) #define YT921X_VLAN_CTRL_FID(x) FIELD_PREP(YT921X_VLAN_CTRL_FID_M, (x)) #define YT921X_VLAN_CTRL_LEARN_DIS BIT_ULL(22) -#define YT921X_VLAN_CTRL_INT_PRI_EN BIT_ULL(21) -#define YT921X_VLAN_CTRL_INT_PRI_M GENMASK_ULL(20, 18) +#define YT921X_VLAN_CTRL_PRIO_EN BIT_ULL(21) +#define YT921X_VLAN_CTRL_PRIO_M GENMASK_ULL(20, 18) +#define YT921X_VLAN_CTRL_PRIO(x) FIELD_PREP(YT921X_VLAN_CTRL_PRIO_M, (= x)) #define YT921X_VLAN_CTRL_PORTS_M GENMASK_ULL(17, 7) #define YT921X_VLAN_CTRL_PORTS(x) FIELD_PREP(YT921X_VLAN_CTRL_PORTS_M,= (x)) #define YT921X_VLAN_CTRL_PORTn(port) BIT_ULL((port) + 7) @@ -433,14 +463,14 @@ #define YT921X_LAG_HASH_SRC_PORT BIT(0) =20 #define YT921X_PORTn_VLAN_CTRL(port) (0x230010 + 4 * (port)) -#define YT921X_PORT_VLAN_CTRL_SVLAN_PRI_EN BIT(31) -#define YT921X_PORT_VLAN_CTRL_CVLAN_PRI_EN BIT(30) +#define YT921X_PORT_VLAN_CTRL_SVLAN_PRIO_EN BIT(31) +#define YT921X_PORT_VLAN_CTRL_CVLAN_PRIO_EN BIT(30) #define YT921X_PORT_VLAN_CTRL_SVID_M GENMASK(29, 18) #define YT921X_PORT_VLAN_CTRL_SVID(x) FIELD_PREP(YT921X_PORT_VLAN_CTRL= _SVID_M, (x)) #define YT921X_PORT_VLAN_CTRL_CVID_M GENMASK(17, 6) #define YT921X_PORT_VLAN_CTRL_CVID(x) FIELD_PREP(YT921X_PORT_VLAN_CTRL= _CVID_M, (x)) -#define YT921X_PORT_VLAN_CTRL_SVLAN_PRI_M GENMASK(5, 3) -#define YT921X_PORT_VLAN_CTRL_CVLAN_PRI_M GENMASK(2, 0) +#define YT921X_PORT_VLAN_CTRL_SVLAN_PRIO_M GENMASK(5, 3) +#define YT921X_PORT_VLAN_CTRL_CVLAN_PRIO_M GENMASK(2, 0) #define YT921X_PORTn_VLAN_CTRL1(port) (0x230080 + 4 * (port)) #define YT921X_PORT_VLAN_CTRL1_VLAN_RANGE_EN BIT(8) #define YT921X_PORT_VLAN_CTRL1_VLAN_RANGE_PROFILE_ID_M GENMASK(7, 4) @@ -478,6 +508,8 @@ enum yt921x_fdb_entry_status { #define YT921X_LAG_NUM 2 #define YT921X_LAG_PORT_NUM 4 =20 +#define YT921X_PRIO_NUM 8 + #define YT9215_MAJOR 0x9002 #define YT9218_MAJOR 0x9001 =20 --=20 2.51.0