From nobody Sat May 30 12:34:27 2026 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (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 95D522D0614 for ; Fri, 8 May 2026 06:58:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778223494; cv=none; b=hpYKZEG4+UgtZaZP3AbSpwrNV0fiKZMIsd6mN5Qr3qCDDB31E7dM2hbznRrLqarvJuE3ZNGUcpqrPQ34EXHuLUS4aWSwwdgOfeWrOECgQ9XH61oIoU7jzHzTVzqmOIkKuTuVgUqHAdn+LE3oKTPYF5jSBkxBLxVe0sng84XHWdw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778223494; c=relaxed/simple; bh=3STGZFIGp1QI0P9KYESK3j78npCaPdnySXuzfK9UW/E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=a0wdIXPKtrfNZDhzOQ+XWdBAXZamYPHsuUBeE5kqZorUWbyYARsWaeEUD8xoUBrvZzC0dmU4yzHbONaf51VKIGaFsgdVmiZs0XJhDvrG/SKH0yIho01ZZebr6+TvA15XSfyIAEzDrEXmsHfB7FE2B1Ah0Ac1W/iTebu+kHUe+y0= 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=VXg2q+vJ; arc=none smtp.client-ip=209.85.214.180 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="VXg2q+vJ" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-2ba17c8cfacso16922195ad.2 for ; Thu, 07 May 2026 23:58:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778223488; x=1778828288; 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=XVeN/tIgR68DwC5ZYD/OpJgnTRgKD56zUbPN+aZwxQg=; b=VXg2q+vJj7ofj3pbGGn9m0Z75t629Mn48TrbmSEn1ZuTIBnPBoYVO6bDBdwJvLKcEn 8Ju4ON/1zyEveUw3lhme/ZEzETFT4qmXeqGDBYPdp06XHpwQ3htMGQljxuEJmqPSK34M nWcwVAoTFHJunsNS91dLoS7+eyyzfo77YbAc61vrBEO6/8HJ331W9qzi9LBtG4U4S2g6 X32pqYdKwm++AirlgdcG2t7vvTp+vTUoHNpdrjivDeBiXL7KDjrfSYk0ns9Cq3Zfmarv nL4sKfjGrzTXf4mB9X0JB6nWrFhXRN5zKx57zR3GHD0duPFhZVc29pXR9a6Goa1t60pM t8lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778223488; x=1778828288; 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=XVeN/tIgR68DwC5ZYD/OpJgnTRgKD56zUbPN+aZwxQg=; b=J07Banr55LLSw+WICATWRq8lstemCPJ8o6LwHLoB9hINFp9CZ7ZfCYX+vE7j7HMvOp tc4b63E0FTW2sWrf1ssV6Z0DNyi4Rlhnc14uE4MIgIWfmIUX2jd+gFqOOPCJePOaDAvP rwlBd8a1bX+Br8Qr/MC6k+UiZ2oPnzDpV7bjQ1hG/KaSg2nZwhDA0CTcDUwn4lDzGW2p EeyEZhQacz54kmn274MncEQD1spPFnBBZ2o2OKuZO4LWUoire3BPyCnK3r0gM8i/3AM7 qgMNVY/+mApzli97F+JWKx6ZARfWwykgJsGf0C3zOZ0QZkQnQC8pm1ICVKhn+VmWSp6h IfFw== X-Forwarded-Encrypted: i=1; AFNElJ+WCAFGqFtC7fILGuyC3qYbaSnsqkVGfqXa9++6hgqZesy6MNR6vtTjV9Yf95z+QSDBTEmZJKGbZOF21kM=@vger.kernel.org X-Gm-Message-State: AOJu0YxliRtGd2wC0zIarbrgudLNf3aGWJX6rA2ZXJF7AMQrUd3rEuAe apygANkW2sD4pNS0monaOT8IPZn7jwjuwP2FEs6f98Ut0tEkHmLb4Fbf X-Gm-Gg: Acq92OHiuM2wt5ootRHMapBi2cCpWdQ+xfKig/K/ceDowCgPpl1m6LP/rbG+SwCxUW0 bQcpjRBtKksx28NasiDVH4ismcIJdz7JO7QEuG+K4cLJFRfdGa2EYyFa5LQpYtdp550L0O5E7UC ycLOmAdzNvv50mEGRNui6xJNhfyP7AEoBmIO3N5YbUUjGgb0u33DMizJeVEwQ8VXs1v+PxcDCcv FFir3yW2zLyxswCM+Xq+7aVTG6DKTQtYvHn40J7P7wd45NHsHBcCB8J/V8gFvaMP3Jp7N7Be7/i VYi/paciXxhUVcXb6Xk9OytQFPSVgIO9ukPQYiCcC0LvKMIYi4r2nJtfMG1qWziDPcI++hoYTjD ho9gsQNVot2igmgSMOsaJ+XoOodOx8eDtTxhsZF6ceIu2cXvvi1eIx9LBKayTg7T81IBWme2Dqv XbCCSEmZlZIVswve39yJbCXPD5Ukv7IG/X2J262rvuCMHjPlsx8A== X-Received: by 2002:a17:902:d2c9:b0:2ba:fed:7891 with SMTP id d9443c01a7336-2ba79bfca66mr135479575ad.30.1778223487880; Thu, 07 May 2026 23:58:07 -0700 (PDT) Received: from d.home.yangfl.dn42 ([2a09:bac5:6619:3046::4cf:90]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2baf1e35bcfsm9488785ad.38.2026.05.07.23.58.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 23:58:07 -0700 (PDT) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Jamal Hadi Salim , Jiri Pirko , Simon Horman , linux-kernel@vger.kernel.org Subject: [PATCH net-next v3 1/2] net/sched: tbf: add extack to offload params Date: Fri, 8 May 2026 14:57:52 +0800 Message-ID: <20260508065757.2566258-2-mmyangfl@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260508065757.2566258-1-mmyangfl@gmail.com> References: <20260508065757.2566258-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" Drivers might have error messages to propagate to user space. Propagate the netlink extack so that they can inform user space in a verbal way of their limitations. Signed-off-by: David Yang --- include/net/pkt_cls.h | 1 + net/sched/sch_tbf.c | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 99ac747b7906..3bd08d7f39c1 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -1046,6 +1046,7 @@ struct tc_tbf_qopt_offload_replace_params { }; =20 struct tc_tbf_qopt_offload { + struct netlink_ext_ack *extack; enum tc_tbf_command command; u32 handle; u32 parent; diff --git a/net/sched/sch_tbf.c b/net/sched/sch_tbf.c index f2340164f579..4576111fe075 100644 --- a/net/sched/sch_tbf.c +++ b/net/sched/sch_tbf.c @@ -139,7 +139,8 @@ static u64 psched_ns_t2l(const struct psched_ratecfg *r, return len; } =20 -static void tbf_offload_change(struct Qdisc *sch) +static void tbf_offload_change(struct Qdisc *sch, + struct netlink_ext_ack *extack) { struct tbf_sched_data *q =3D qdisc_priv(sch); struct net_device *dev =3D qdisc_dev(sch); @@ -148,6 +149,7 @@ static void tbf_offload_change(struct Qdisc *sch) if (!tc_can_offload(dev) || !dev->netdev_ops->ndo_setup_tc) return; =20 + qopt.extack =3D extack; qopt.command =3D TC_TBF_REPLACE; qopt.handle =3D sch->handle; qopt.parent =3D sch->parent; @@ -166,6 +168,7 @@ static void tbf_offload_destroy(struct Qdisc *sch) if (!tc_can_offload(dev) || !dev->netdev_ops->ndo_setup_tc) return; =20 + qopt.extack =3D NULL; qopt.command =3D TC_TBF_DESTROY; qopt.handle =3D sch->handle; qopt.parent =3D sch->parent; @@ -176,6 +179,7 @@ static int tbf_offload_dump(struct Qdisc *sch) { struct tc_tbf_qopt_offload qopt; =20 + qopt.extack =3D NULL; qopt.command =3D TC_TBF_STATS; qopt.handle =3D sch->handle; qopt.parent =3D sch->parent; @@ -193,6 +197,7 @@ static void tbf_offload_graft(struct Qdisc *sch, struct= Qdisc *new, .parent =3D sch->parent, .child_handle =3D new->handle, .command =3D TC_TBF_GRAFT, + .extack =3D extack, }; =20 qdisc_offload_graft_helper(qdisc_dev(sch), sch, new, old, @@ -477,7 +482,7 @@ static int tbf_change(struct Qdisc *sch, struct nlattr = *opt, qdisc_put(old); err =3D 0; =20 - tbf_offload_change(sch); + tbf_offload_change(sch, extack); done: return err; } --=20 2.53.0 From nobody Sat May 30 12:34:27 2026 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.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 C5F0633DEF9 for ; Fri, 8 May 2026 06:58:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778223496; cv=none; b=A+5S3nq8kIsKFtG0edc0p7jQudOILBGEOh9WHTpy7OH75P2xL1NQymAqv8yeHOVgG5WvG4JdOaxHY2flnc1s4SZlQ5G+IGfuP/6uUnTpUESVg9WAvyuXWEZayciRyTXeUoXSy3p1BsQixIkq3sPNe8G8Qa9r4kOuTOgiLbT7Dnw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778223496; c=relaxed/simple; bh=UdgosYae9F+e7dLGb4mKSYKF+x5xyGjAKdpTwwSF/w8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=csNoHLL73/G66JWNf1+Q322MiktM2VBLq+sa67a9ckSknFqtYs/mquT/GY4eHlIOVoAlNytkSwHSAVjRRgbm1FvdHTyu5svX0i1qX8jqAkT1ZXb/6OzAArTNWG+tFGLuYykwbJPmeOHd/lWQQ2vuQc2WrVPKSumOFer69FrattE= 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=VGBGh7j3; arc=none smtp.client-ip=209.85.214.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="VGBGh7j3" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2b9fcf7c91bso16050985ad.0 for ; Thu, 07 May 2026 23:58:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778223491; x=1778828291; 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=/rvwhZ7O9c2frMQxQn/S0l7e+r5hR2V5hdN2HElgeRU=; b=VGBGh7j3P1/JRnQqjBxjpsmcWYraAaVkZPMT1BWDiX7mwAs9iP6w9li1piHzQU33Df +B9zMtLiyU8cPI3rCZJ7g4rpYgsvamY1+EIsoTHuX9d/9bzjOmcbLz5wtXspxA6s6tyc UGOvfr6ezByPX/VvajD1vpAwWOFT11GBodY87NU/0unDrdzzDO33iTKBSW2XSGpomfDR fplwqlyrMw+ysHQ6T/zwpPS4+uoqo91z54nGxr4IUQuT9DXoGqHa5fkZyuxf/9bG5lrX L+aLBUcriF6B8yrhMb38o+ZHEJ69JjjWN3yRui6+a2YZc9MWAO6T49AMMFWPipWxY/sT pkgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778223491; x=1778828291; 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=/rvwhZ7O9c2frMQxQn/S0l7e+r5hR2V5hdN2HElgeRU=; b=qy86cXnoSgW5Df4TIo9057MEdGnfQXqo+Iiue8Hr3E5uBZ+BdfYt85z1sSwWGIdrXO O9S+Nh+el+sb/5i3S4y5mwM1RhIhrFtIuHZSjy1c5eqn7a3RaSGBWeVR/WEdHa5MNC3a u+mCyy626nClELzIy2bretlwgxsq3loW9rcYnYvLNfmOkzdBEBpIG84t74uOjq5xZ4lM 6Bu6kALGWDo4nFRIFSCM3p/wzPCCx7HzwHAx3nXVodRyQ5gydx/h8XWQoTkMZTIw2n0U tgXCYcwUODdOPyRvMMoHv0x8MXzdkgJybZCNA7xXYMz0H4zCmNwguUe+JFVaixUPSK3q lE0w== X-Forwarded-Encrypted: i=1; AFNElJ9yWgunqX1l07i7oFBTmoh3sp/H2kLciIQpTLuiCd96+yzmk6/KNJKanz7LgYbJpOofwM8KWs8BwgTj4kg=@vger.kernel.org X-Gm-Message-State: AOJu0YzpI4Oofv5NqA3tL+iihZ/6C50+p2oZtKB4lLjg1OYcNn9JGAxJ dXUMqtRVskYrQ1XNwz7dG+/XjV1dtsNkk2HdCclEywp5U+8bm1KIulvg X-Gm-Gg: Acq92OGV7ynkVww51PkLZPBD7sEfUpiSdDLku6cYvkZfLlzJVHnH0mfuEKaylTGNmOZ UZ4eHFjvbuksZlLCK0XyNuBG5NtQP30dr9U+oL9j2HCoc1kI1WuXZTs8JeeQ77MCoVqUlISdbo2 oiwN1mz+M37/VtJzxeybZnOxFSA6Pu8oZHvmoP5Idt4MsiRw84Bwyqnr8vP1kt+9zlaPNFyqx35 ZedxWMi1FOhJ58fWXM1vShgCS/Rp7e4rqz1VdN0+WYMjIX15MwJerEoK8Na3+mpferdXe8M1WQ3 IyMJsTResmDtGf7tXrm371K9kfNmL7b3eezOJDlnLiVkY/h2xhS+sGXmqTuk87ffN38WuFP1SH8 jyROQThKZVUBQ7ZHATBH76J9hw6MP6pSTwXWx2ZvdtasnUwgLJEEuKN6jjq3mmQECHRJm+DJHw1 gvuPdKxvDC2FHgtWb0v8tPce0as7/OcejNk5Segd2eBk77gZiJ7S7Ug3KdZFhE X-Received: by 2002:a17:903:3b85:b0:2b2:ddfa:3a1e with SMTP id d9443c01a7336-2ba7a31dc61mr122165185ad.30.1778223491400; Thu, 07 May 2026 23:58:11 -0700 (PDT) Received: from d.home.yangfl.dn42 ([2a09:bac5:6619:3046::4cf:90]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2baf1e35bcfsm9488785ad.38.2026.05.07.23.58.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 May 2026 23:58:11 -0700 (PDT) From: David Yang To: netdev@vger.kernel.org Cc: David Yang , Andrew Lunn , Vladimir Oltean , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Jamal Hadi Salim , Jiri Pirko , Simon Horman , linux-kernel@vger.kernel.org Subject: [PATCH net-next v3 2/2] net: dsa: yt921x: Add port TBF support Date: Fri, 8 May 2026 14:57:53 +0800 Message-ID: <20260508065757.2566258-3-mmyangfl@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260508065757.2566258-1-mmyangfl@gmail.com> References: <20260508065757.2566258-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" React to TC_SETUP_QDISC_TBF and configure the egress shaper as appropriate with the maximum rate and burst size requested by the user. Per queue shaper is possible, though not touched in this commit. Signed-off-by: David Yang --- drivers/net/dsa/yt921x.c | 84 ++++++++++++++++++++++++++++++++++++++++ drivers/net/dsa/yt921x.h | 18 +++++++++ 2 files changed, 102 insertions(+) diff --git a/drivers/net/dsa/yt921x.c b/drivers/net/dsa/yt921x.c index fd1fdcd5f9a3..e5f547629bfd 100644 --- a/drivers/net/dsa/yt921x.c +++ b/drivers/net/dsa/yt921x.c @@ -24,6 +24,7 @@ #include #include #include +#include =20 #include "yt921x.h" =20 @@ -1272,6 +1273,17 @@ yt921x_marker_tfm_police(struct yt921x_marker *marke= r, priv, port, extack); } =20 +static int +yt921x_marker_tfm_shape(struct yt921x_marker *marker, u64 rate, u64 burst, + unsigned int flags, struct yt921x_priv *priv, int port, + struct netlink_ext_ack *extack) +{ + return yt921x_marker_tfm(marker, rate, burst, flags, + priv->port_shape_slot_ns, YT921X_SHAPE_CIR_MAX, + YT921X_SHAPE_CBS_MAX, YT921X_SHAPE_UNIT_MAX, + priv, port, extack); +} + static int yt921x_police_validate(const struct flow_action_police *police, const struct flow_action *action, @@ -1378,6 +1390,70 @@ yt921x_dsa_port_policer_add(struct dsa_switch *ds, i= nt port, return res; } =20 +static int +yt921x_dsa_port_setup_tc_tbf_port(struct dsa_switch *ds, int port, + const struct tc_tbf_qopt_offload *qopt) +{ + struct yt921x_priv *priv =3D to_yt921x_priv(ds); + struct netlink_ext_ack *extack =3D qopt->extack; + u32 ctrls[2]; + int res; + + if (qopt->parent !=3D TC_H_ROOT) + return -EOPNOTSUPP; + + switch (qopt->command) { + case TC_TBF_STATS: + return 0; + case TC_TBF_DESTROY: + ctrls[0] =3D 0; + ctrls[1] =3D 0; + break; + case TC_TBF_REPLACE: { + const struct tc_tbf_qopt_offload_replace_params *p; + struct yt921x_marker marker; + + p =3D &qopt->replace_params; + + res =3D yt921x_marker_tfm_shape(&marker, p->rate.rate_bytes_ps, + p->max_size, + YT921X_MARKER_SINGLE_BUCKET, + priv, port, extack); + if (res) + return res; + + ctrls[0] =3D YT921X_PORT_SHAPE_CTRLa_CIR(marker.cir) | + YT921X_PORT_SHAPE_CTRLa_CBS(marker.cbs); + ctrls[1] =3D YT921X_PORT_SHAPE_CTRLb_UNIT(marker.unit) | + YT921X_PORT_SHAPE_CTRLb_EN; + break; + } + default: + return -EOPNOTSUPP; + } + + mutex_lock(&priv->reg_lock); + res =3D yt921x_reg64_write(priv, YT921X_PORTn_SHAPE_CTRL(port), ctrls); + mutex_unlock(&priv->reg_lock); + + return res; +} + +static int +yt921x_dsa_port_setup_tc(struct dsa_switch *ds, int port, + enum tc_setup_type type, void *type_data) +{ + switch (type) { + case TC_SETUP_QDISC_TBF: { + const struct tc_tbf_qopt_offload *qopt =3D type_data; + + return yt921x_dsa_port_setup_tc_tbf_port(ds, port, qopt); + } + default: + return -EOPNOTSUPP; + } +} + static int yt921x_mirror_del(struct yt921x_priv *priv, int port, bool ingress) { @@ -3524,6 +3600,13 @@ static int yt921x_chip_setup_tc(struct yt921x_priv *= priv) return res; priv->meter_slot_ns =3D ctrl * op_ns; =20 + ctrl =3D max(priv->port_shape_slot_ns / op_ns, + YT921X_PORT_SHAPE_SLOT_MIN); + res =3D yt921x_reg_write(priv, YT921X_PORT_SHAPE_SLOT, ctrl); + if (res) + return res; + priv->port_shape_slot_ns =3D ctrl * op_ns; + return 0; } =20 @@ -3680,6 +3763,7 @@ static const struct dsa_switch_ops yt921x_dsa_switch_= ops =3D { /* rate */ .port_policer_del =3D yt921x_dsa_port_policer_del, .port_policer_add =3D yt921x_dsa_port_policer_add, + .port_setup_tc =3D yt921x_dsa_port_setup_tc, /* hsr */ .port_hsr_leave =3D dsa_port_simple_hsr_leave, .port_hsr_join =3D dsa_port_simple_hsr_join, diff --git a/drivers/net/dsa/yt921x.h b/drivers/net/dsa/yt921x.h index 546b12a8994a..70fa780c337f 100644 --- a/drivers/net/dsa/yt921x.h +++ b/drivers/net/dsa/yt921x.h @@ -531,6 +531,19 @@ enum yt921x_app_selector { #define YT921X_MIRROR_PORT_M GENMASK(3, 0) #define YT921X_MIRROR_PORT(x) FIELD_PREP(YT921X_MIRROR_PORT_M, (x)) =20 +#define YT921X_PORT_SHAPE_SLOT 0x34000c +#define YT921X_PORT_SHAPE_SLOT_SLOT_M GENMASK(11, 0) +#define YT921X_PORTn_SHAPE_CTRL(port) (0x354000 + 8 * (port)) +#define YT921X_PORT_SHAPE_CTRLb_EN BIT(4) +#define YT921X_PORT_SHAPE_CTRLb_PKT_MODE BIT(3) /* 0: byte rate mode */ +#define YT921X_PORT_SHAPE_CTRLb_UNIT_M GENMASK(2, 0) +#define YT921X_PORT_SHAPE_CTRLb_UNIT(x) FIELD_PREP(YT921X_PORT_SHAPE_CT= RLb_UNIT_M, (x)) +#define YT921X_PORT_SHAPE_CTRLa_CBS_M GENMASK(31, 18) +#define YT921X_PORT_SHAPE_CTRLa_CBS(x) FIELD_PREP(YT921X_PORT_SHAPE_CTR= La_CBS_M, (x)) +#define YT921X_PORT_SHAPE_CTRLa_CIR_M GENMASK(17, 0) +#define YT921X_PORT_SHAPE_CTRLa_CIR(x) FIELD_PREP(YT921X_PORT_SHAPE_CTR= La_CIR_M, (x)) +#define YT921X_PORTn_SHAPE_STAT(port) (0x356000 + 4 * (port)) + #define YT921X_EDATA_EXTMODE 0xfb #define YT921X_EDATA_LEN 0x100 =20 @@ -556,6 +569,10 @@ enum yt921x_fdb_entry_status { #define YT921X_METER_UNIT_MAX ((1 << 3) - 1) #define YT921X_METER_CIR_MAX ((1 << 18) - 1) #define YT921X_METER_CBS_MAX ((1 << 16) - 1) +#define YT921X_PORT_SHAPE_SLOT_MIN 80 +#define YT921X_SHAPE_UNIT_MAX ((1 << 3) - 1) +#define YT921X_SHAPE_CIR_MAX ((1 << 18) - 1) +#define YT921X_SHAPE_CBS_MAX ((1 << 14) - 1) =20 #define YT921X_LAG_NUM 2 #define YT921X_LAG_PORT_NUM 4 @@ -652,6 +669,7 @@ struct yt921x_priv { =20 const struct yt921x_info *info; unsigned int meter_slot_ns; + unsigned int port_shape_slot_ns; /* cache of dsa_cpu_ports(ds) */ u16 cpu_ports_mask; unsigned char cycle_ns; --=20 2.53.0