From nobody Fri Sep 25 01:20:33 2026 Received: from mail-pj2-f12.google.com (mail-pj2-f12.google.com [74.125.227.140]) (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 CD4DC4B0CAA for ; Thu, 17 Sep 2026 20:43:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789677802; cv=none; b=bS+M1crJXh/kKFVKD0NqtgdZE3wgMIPJUM7irvmwJXhY+tmNi48w0Wu4OIwgISQSR7nx3qChsU1+NcyINdh1QAwo9lRDxmsvXTEDPnOiJn68TTaR0QsGEGCMyQxKnSLcWuE8qfhA+i1o/TCsb/DyKFv0Gm1jeXZ+wpVoouBwENI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789677802; c=relaxed/simple; bh=eC8elISB5qtIOUKXlO0FLQhcvu/y2EQ3rutmmhPEjZI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=I3QifBPt7Aw5EIqzrvlEpQMLgM7LXnNUOY+kyrY3J6saEJ9ruHJF3KkPBqqV8vixiefDTAfskX2WxmdhrvH8+XWTFlysPTMHGizQ6999QlrPgDpSXmp6MSY0xL5XPNTmr+l5l7j5W/f47BxThSUolROIe4PoH8lu+LhNJumZvX8= 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=dRG3rN5I; arc=none smtp.client-ip=74.125.227.140 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="dRG3rN5I" Received: by mail-pj2-f12.google.com with SMTP id d9443c01a7336-2dd58e1e2c7so590145ad.0 for ; Thu, 17 Sep 2026 13:43:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789677800; x=1790282600; 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:content-type; bh=1HBzd/E1kcUqxPm/kCqliBG780TsQKu465rZObaAoL4=; b=dRG3rN5IBueuca1fDMkhM7MGmr6jmv8jjSZL0skRmlv/RJXetwiRTtm3IuipEqKAzN 2+uf4RLRoTWX7QTt3ax9GJ9wnPqSHVAA56MYZTGM+L2dyXcl33xTLXHFRIyGHQVrzhKL WG5U+xidaDp0Wqefjk00XhTDw8WZ3LY0mLHHkqlVS/yLB0rU4FnOm4z/l2LeK+ozWIMg xt+ni/PUCI32sozMZtoSN9rD3DFagLihuUU2FqiKdJrb5HwosWBiW8RuptYhCn8+93iQ zgv8OZQ7dyJj8Cck9qY7KykfWcdmm+Kz9Px9j4wDjkclHY3Zkn9cN4VTg0aOcQtRgX+t KrsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789677800; x=1790282600; 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:content-type; bh=1HBzd/E1kcUqxPm/kCqliBG780TsQKu465rZObaAoL4=; b=i06j7PXwaOs74g9/HAzQW/TQibp7sX33yCwEdLxOp2r+4YS4BCO9PomuiszhYq3pG0 NLoQOO2Pbc/QkheznChanhNPUB76++Wm3bPL0PLSk7iwMWMSa0mrvP/fEEamw14Fll67 PQB6eguVbLfqp/dheqelFv85OlIyXXK4Q1oK0vvSKTEdWjQCJN4kvVgVvPA8iNViv3ex coV1PU5gHeHIMr/BG3cfOx9WMiPEKa135Zkyx9ORamPPhZ9d72h0r6zpA9iNhzX1Cv25 vdTB5Sn2bR1hOKpqq5/ChsqodNeRtDX0opLU8Nn4dsu9G/IBr5HNd8yzPHfrean5d3Vy RTiQ== X-Forwarded-Encrypted: i=1; AKwUvBwb3UCrCuJEq4Gwqd+EkjbZvxR+1x2MDEgwLD3Pdby4TlStiJMCuvz3Xi5AmeiI8pRDE+J+KXNdGe3iOog=@vger.kernel.org X-Gm-Message-State: AFuF++kfLqrr8sLyIvnQttHQflORysr1ZTSspkjWMvG6lHWNE0GFSCoZ r+g88QPrhP2QCqb1sYYumwaN0C94dTAuyT+rEG27Hr0BmnUEHCr8jeEc X-Gm-Gg: AYBFou3CPb8oRlDB/vpFZYIXyqKs6WH6zg7TKZtCzAuOwrAqmqvN/4MeZZpEVEVFSMs NPuMEoNGXSijP9uQyFhPeuxo3BqV6E6gkmw3H3idYF838MO3TX9zMHhfKzShayqZ9/LRTRM/cA6 ee5YkmeWNiTCU0y5F7lPaKOUDUDvqsLtJ1T5sF8rGE8AciQqTMIp0uICtkrWsernOSMjWcjohIa Fm1D3un7FBYcmdRO5qiUfQQwpw4eor/pB71B1Rvo+VF3vnvws/h0tXqZZYU0CXobDCVZgrvG68y +uni+Jf/xETayuEKKrETMTrqE2H/9QF0eHvJCLG5waCEI9Z5Suy4iYg7fJVrch9BiuF6QXQfVm9 +ZvEPl48XUyyBuf4a/qPiJLqpYChUCUc00rtjM3s1E29ABxtlwZRIZ8CPTXWr4EfLxAxYFHM5jV 9LqX4xZs+eItVkJxGKlG+poqfnWLqJXuGIXrHWRMBrFo8QRpjERjSa810/6XCAcfJRKc1Emt1qF 2zElTiAW+u0vOH5T+seJtPoj0cJDykvWNlaxGV4CFywF6r0J6a4xX5juoATqYhp3mStY2DWjAOc n1OYPtfpww== X-Received: by 2002:a17:902:db0f:b0:2d8:d4d0:7931 with SMTP id d9443c01a7336-2ddb1b995a3mr6577915ad.21.1789677799963; Thu, 17 Sep 2026 13:43:19 -0700 (PDT) Received: from Inspiron-14-5420.. ([2402:e280:21c6:671:6248:69c:ea81:be26]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33c1943f4bcsm3620046eec.21.2026.09.17.13.43.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 13:43:19 -0700 (PDT) From: "Hemendra M. Naik" To: netdev@vger.kernel.org Cc: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, jiri@resnulli.us, jhs@mojatatu.com, shuah@kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, vishy0777@gmail.com, tahiliani@nitk.edu.in, "Hemendra M. Naik" Subject: [PATCH net-next v6 1/3] net/sched: sch_fq_pie: add per-flow statistics via class ops Date: Fri, 18 Sep 2026 02:12:23 +0530 Message-Id: <20260917204225.275251-2-hemendranaik@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260917204225.275251-1-hemendranaik@gmail.com> References: <20260917204225.275251-1-hemendranaik@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" FQ-PIE schedules independent PIE controllers per flow but exposes no per-flow AQM state. Without class-level statistics there is no way to observe the per-flow drop probability, queue delay, deficit or dequeue rate from userspace. Extend tc_fq_pie_xstats with a type discriminator and tc_fq_pie_cl_stats for per-flow metrics. The nine existing __u32 counters keep their offsets, type is appended at offset 36 and class_stats follows it, growing the structure from 36 to 64 bytes. Wire up fq_pie_class_ops with walk, dump, and dump_stats only so that 'tc -s class show' reports per-flow state (prob, delay, deficit, avg_dq_rate, dq_rate_estimating). Filter attachment callbacks (.tcf_block, .bind_tcf, .unbind_tcf) are omitted on purpose. Derive delay with div_u64() from the full 64-bit nanosecond value rather than truncating to u32 before dividing, which wrapped for sojourn times above ~4.295 s, and widen avg_dq_rate to u64 before scaling it by PSCHED_TICKS_PER_SEC. Signed-off-by: Hemendra M. Naik Signed-off-by: Vishal Kamath Signed-off-by: Mohit P. Tahiliani --- include/uapi/linux/pkt_sched.h | 16 +++++++ net/sched/sch_fq_pie.c | 86 +++++++++++++++++++++++++++++++++- 2 files changed, 101 insertions(+), 1 deletion(-) diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h index 490efd288526..9c0c9787f0c3 100644 --- a/include/uapi/linux/pkt_sched.h +++ b/include/uapi/linux/pkt_sched.h @@ -953,6 +953,20 @@ enum { }; #define TCA_FQ_PIE_MAX (__TCA_FQ_PIE_MAX - 1) =20 +enum { + TCA_FQ_PIE_XSTATS_QDISC, + TCA_FQ_PIE_XSTATS_CLASS, +}; + +struct tc_fq_pie_cl_stats { + __u64 prob; /* current probability */ + __u32 delay; /* current delay in microseconds */ + __s32 deficit; /* number of remaining byte credits */ + __u32 avg_dq_rate; /* current average dq_rate in + * bytes/second + */ + __u32 dq_rate_estimating; /* is avg_dq_rate being calculated? */ +}; struct tc_fq_pie_xstats { __u32 packets_in; /* total number of packets enqueued */ __u32 dropped; /* packets dropped due to fq_pie_action */ @@ -963,6 +977,8 @@ struct tc_fq_pie_xstats { __u32 new_flows_len; /* count of flows in new list */ __u32 old_flows_len; /* count of flows in old list */ __u32 memory_usage; /* total memory across all queues */ + __u32 type; + struct tc_fq_pie_cl_stats class_stats; }; =20 /* CBS */ diff --git a/net/sched/sch_fq_pie.c b/net/sched/sch_fq_pie.c index 5982847df8f8..675861f578b8 100644 --- a/net/sched/sch_fq_pie.c +++ b/net/sched/sch_fq_pie.c @@ -511,7 +511,9 @@ static int fq_pie_dump(struct Qdisc *sch, struct sk_buf= f *skb) static int fq_pie_dump_stats(struct Qdisc *sch, struct gnet_dump *d) { struct fq_pie_sched_data *q =3D qdisc_priv(sch); - struct tc_fq_pie_xstats st =3D { 0 }; + struct tc_fq_pie_xstats st =3D { + .type =3D TCA_FQ_PIE_XSTATS_QDISC, + }; struct list_head *pos; =20 sch_tree_lock(sch); @@ -563,7 +565,89 @@ static void fq_pie_destroy(struct Qdisc *sch) kvfree(q->flows); } =20 +static struct Qdisc *fq_pie_leaf(struct Qdisc *sch, unsigned long arg) +{ + return NULL; +} + +static unsigned long fq_pie_find(struct Qdisc *sch, u32 classid) +{ + return 0; +} + +static int fq_pie_dump_class(struct Qdisc *sch, unsigned long cl, + struct sk_buff *skb, struct tcmsg *tcm) +{ + tcm->tcm_handle |=3D TC_H_MIN(cl); + return 0; +} + +static int fq_pie_dump_class_stats(struct Qdisc *sch, unsigned long cl, + struct gnet_dump *d) +{ + struct fq_pie_sched_data *q =3D qdisc_priv(sch); + struct gnet_stats_queue qs =3D { 0 }; + struct tc_fq_pie_xstats xstats; + u32 idx =3D cl - 1; + + if (idx < q->flows_cnt) { + const struct fq_pie_flow *flow =3D &q->flows[idx]; + + memset(&xstats, 0, sizeof(xstats)); + xstats.type =3D TCA_FQ_PIE_XSTATS_CLASS; + xstats.class_stats.prob =3D + READ_ONCE(flow->vars.prob) << BITS_PER_BYTE; + xstats.class_stats.delay =3D + div_u64(PSCHED_TICKS2NS(READ_ONCE(flow->vars.qdelay)), + NSEC_PER_USEC); + xstats.class_stats.deficit =3D READ_ONCE(flow->deficit); + xstats.class_stats.dq_rate_estimating =3D + READ_ONCE(q->p_params.dq_rate_estimator); + + if (xstats.class_stats.dq_rate_estimating) { + xstats.class_stats.avg_dq_rate =3D + ((u64)READ_ONCE(flow->vars.avg_dq_rate) + * PSCHED_TICKS_PER_SEC) >> PIE_SCALE; + } + + qs.qlen =3D READ_ONCE(flow->qlen); + qs.backlog =3D READ_ONCE(flow->backlog); + } + if (gnet_stats_copy_queue(d, NULL, &qs, qs.qlen) < 0) + return -1; + if (idx < q->flows_cnt) + return gnet_stats_copy_app(d, &xstats, sizeof(xstats)); + return 0; +} + +static void fq_pie_walk(struct Qdisc *sch, struct qdisc_walker *arg) +{ + struct fq_pie_sched_data *q =3D qdisc_priv(sch); + unsigned int i; + + if (arg->stop) + return; + + for (i =3D 0; i < q->flows_cnt; i++) { + if (list_empty(&q->flows[i].flowchain)) { + arg->count++; + continue; + } + if (!tc_qdisc_stats_dump(sch, i + 1, arg)) + break; + } +} + +static const struct Qdisc_class_ops fq_pie_class_ops =3D { + .leaf =3D fq_pie_leaf, + .find =3D fq_pie_find, + .dump =3D fq_pie_dump_class, + .dump_stats =3D fq_pie_dump_class_stats, + .walk =3D fq_pie_walk, +}; + static struct Qdisc_ops fq_pie_qdisc_ops __read_mostly =3D { + .cl_ops =3D &fq_pie_class_ops, .id =3D "fq_pie", .priv_size =3D sizeof(struct fq_pie_sched_data), .enqueue =3D fq_pie_qdisc_enqueue, --=20 2.34.1 From nobody Fri Sep 25 01:20:33 2026 Received: from mail-pz2-f12.google.com (mail-pz2-f12.google.com [74.125.228.12]) (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 A602B4F3EB5 for ; Thu, 17 Sep 2026 20:43:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.12 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789677821; cv=none; b=Zn2y89Bb6zKRJSkkbEON7efPD1FPRA2WsmEJ9OawhPiFjFSAIbzeSWSX32gTTQIMIV8ClOq8vZKZ6ZCf12hlOzcH5yHsp9mEyXt1GnZnQkDVCL9Pu7PT9PbPGwUEx+iGOvq98yGGgwSPSI9+J4TFfJecTokttPV2vEmkJlZcHFg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789677821; c=relaxed/simple; bh=9w0AVcWNA84jQDGKGl+dT5kJPPgIcXcmxr0hJJ6y3Tc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YHub+0VxqvyYI8f1abdy86rkwzSIyYw5982z4bxrhaBpcFsii4y5V3i0IgQRt/pkbMOMRpo1x4HP0V43ckTFAoMlxO4rw3d2oyQtOy3IwribAH0znkd+QroYY6qHwEb9ukrkV0qSdrdpjpgY94VY4GRd+AlvvXWBYUCAVdLPqhs= 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=BSI10/P8; arc=none smtp.client-ip=74.125.228.12 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="BSI10/P8" Received: by mail-pz2-f12.google.com with SMTP id d2e1a72fcca58-8633a38df87so49887b3a.2 for ; Thu, 17 Sep 2026 13:43:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789677817; x=1790282617; 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:content-type; bh=pxddXcqpQ70lml4CXAKghIFIizhS2TiitRLOgATOP38=; b=BSI10/P8SfzGc+8DaUq9BDBixtOzNefPOJAWh/l5bGz6T/vprnIgOXIfit/xU3zCaa 9Qk9Yi2oG0au1BljilV8xcES4IUj7rQN/K+fyLhgGn3cy6pTlpAodUNmysec8pZ9vp5T kpkFVW6AaEHToYyuSLxLgKk4JXoVwEjW6k0XJVPYonUfbAqSJgmXhHDMJPsmBH8H8zpQ I3jUozJMiUt7Nzcexd5q8fnHBiIKEXFdHDarrCkfPGu9rLPqSF1YX9XKpwLvUy3AudgW uR3mdgDntfGis/eoZu1CaIecatjF3II2C7eJqwBehFBLZhv4wC51ggCQ6YzbPUGO5Q8A /3Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789677817; x=1790282617; 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:content-type; bh=pxddXcqpQ70lml4CXAKghIFIizhS2TiitRLOgATOP38=; b=JYWbRMCGNAtVpLvkh4lCXbRF7DWAVxR9URKMGq/5S4F2CDC1chxOIhuVTG6/3D5tvE YqlvkFF6R13dqRVNgnIIsRPDFNsfEvBIycXSVhmZrDXNMAqZ+1CT1UI5/7DOzd+ZisaZ SvvFvBQ8w4Z/1V51TutrPRzS+niilB17o+XYQMDqMK8L6rRzbCBAYiHg6AAIX7aA3qDb DBqB8r2nFcXnIup2dZF7fW/cUZIw3uuwe7LdR++qllTk8Is4qbYe10ogoely1RJSrC5S NHpa5vWYittcYKuOXEtvU/NYSXtO0vKGwp5vGRbN0bOfeyGoM7lBUqeHF1ZEmFSa7vFn t1AQ== X-Forwarded-Encrypted: i=1; AKwUvBz7gqTzlTMHCrzKFxus3HfEARZ7/r5s4MFAwkowyHbWLFhrZQh6JDXse5lTKSOIaHdda2KwrwubR7rRkM4=@vger.kernel.org X-Gm-Message-State: AFuF++kLgKVB2/osBVxDHW5EQxmGk3/vNl/ChV81HtqHJGQtuGqQIZCf CMbk0bAZSdQtT076/zz/sipViKQV8xb+3euF36qcjwI6TtIIP3vrehtt X-Gm-Gg: AYBFou2ZQU4r7I4wmXeSsIYI7naBg8nR3t/4xgDezh27Mqius7urrIKBsQmBrim4jCn FeUkVp1Ef500QvAeWhJMJ+aD/dJSmo3JtiGs48A0EBj7TNYMnaHOHjPM/ziW7SiyYTNQUHokS9V j3TkZDAHbM65umpZhB+k9O+1IEnS/dh/Jfc6b32q7R3MsIEkG/PQldcRkvtMSBuz4vyLSip5+lj sxBXNUMsOtZZFfBA4aAie8r7UgdqiLSNWJUXGUo2S2OFnE6Y+FuraWJx5e2LlZYm02Mj0nJIn1G VD4pQbaR3KbNfYkwrJOVHQFF1BRM5m0S7oc1oleeeUY0yEr9DxWeBA6N1pHWfS0CYiPj9zUERie CivuWsdxxVjkhphaSsaQ52pqMxERksjCXB4XJeZs8L7/CF8mBY9oa1gAHONbHGOZlIfsLXXRx4T n5g6+3zUgd0YCl+kCkjkWz6c3OgIsbUSGRrbVpLPOcAn1GvGx+jt7dvX6hcGRWPwSzQcFVlLnFN skQYmfUkQ/uZ7Z4+JLj0moZKj6JPBl+q1md4ISsOW5dPRoAG7gnfw7DcYjsXgSca3qLPYB2btA= X-Received: by 2002:a05:6a20:2586:b0:3dd:85aa:452a with SMTP id adf61e73a8af0-3dd8c53aa87mr316005637.37.1789677817154; Thu, 17 Sep 2026 13:43:37 -0700 (PDT) Received: from Inspiron-14-5420.. ([2402:e280:21c6:671:6248:69c:ea81:be26]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33c1943f4bcsm3620046eec.21.2026.09.17.13.43.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 13:43:36 -0700 (PDT) From: "Hemendra M. Naik" To: netdev@vger.kernel.org Cc: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, jiri@resnulli.us, jhs@mojatatu.com, shuah@kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, vishy0777@gmail.com, tahiliani@nitk.edu.in, "Hemendra M. Naik" Subject: [PATCH net-next v6 2/3] selftests: tc-testing: add fq_pie per-flow class stats test Date: Fri, 18 Sep 2026 02:12:24 +0530 Message-Id: <20260917204225.275251-3-hemendranaik@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260917204225.275251-1-hemendranaik@gmail.com> References: <20260917204225.275251-1-hemendranaik@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" Add tc-testing case 83c0: build a TBF + fq_pie hierarchy on $DUMMY, push traffic through it with ping, and verify that 'tc -s class show' reports an fq_pie class. The per-flow counters themselves (prob, delay, deficit) are printed only after the companion iproute2 change, "tc: fq_pie: add support for printing per-flow PIE statistics" Signed-off-by: Hemendra M. Naik Signed-off-by: Vishal Kamath Signed-off-by: Mohit P. Tahiliani --- .../tc-testing/tc-tests/qdiscs/fq_pie.json | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/fq_pie.json= b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/fq_pie.json index 229fe1bf4a90..15b2667285eb 100644 --- a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/fq_pie.json +++ b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/fq_pie.json @@ -40,5 +40,32 @@ "matchPattern": "qdisc fq_pie 1: root refcnt [0-9]+ limit 1p", "matchCount": "1", "teardown": ["$TC qdisc del dev $DEV1 handle 1: root"] + }, + { + "id": "83c0", + "name": "FQ-PIE class stats accessible via tc class show", + "category": [ + "qdisc", + "fq_pie" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + "$IP link set dev $DUMMY up || true", + "$IP addr add 10.10.11.10/24 dev $DUMMY || true", + "$TC qdisc add dev $DUMMY root handle 1: tbf rate 8bit burst 1= 00b latency 100ms", + "$TC qdisc add dev $DUMMY parent 1:1 handle 2: fq_pie limit 10= 0 flows 1", + "ping -c 50 -i 0.001 -W 0.01 -s 56 10.10.11.11 -I $DUMMY > /de= v/null 2>&1 || true" + ], + "cmdUnderTest": "$TC -s class show dev $DUMMY", + "expExitCode": "0", + "verifyCmd": "$TC -s class show dev $DUMMY", + "matchPattern": "class fq_pie 2:[0-9]+ .*prob .*delay .*deficit", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root", + "$IP addr del 10.10.11.10/24 dev $DUMMY || true" + ] } ] --=20 2.34.1 From nobody Fri Sep 25 01:20:33 2026 Received: from mail-pj2-f13.google.com (mail-pj2-f13.google.com [74.125.227.141]) (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 178CE4F4034 for ; Thu, 17 Sep 2026 20:43:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.141 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789677840; cv=none; b=mg2/qd0cMtYjnldClEfh/MFEo2E6cm3KKq2va1b11i/tcHnfAI3FRnBv75FfdqiTTjdmsaNYBes2fZZ2yEzTPfEs+X6rnSMamBbwvM7h3dtqn55yw55gmzw5wq+BaeEP1Be6hSFltEXikjLboWYj1LA9Bq03LdJ1R5VYsqKap6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789677840; c=relaxed/simple; bh=3sf9YuBAZ2zv9t1g2dgGBjeM9ZfIN0Yd/tz3mo8MbxA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=BXcFZTikaMkTEO86hFF4ju0KeMzk5uIYNm86++QtUftuQip/TEU2NERIiiPY0xoTBvQYH9xmk7ADTKv8BcBdTybFYm7VoHAPc4v8E3xrnQcPBfGn0wrLzp4fbzvWqsqJ+fXvRxaEsn3BoxA3/6IfISxUbpZxjB3tP1Tdr9zW6sY= 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=ryFXBWcT; arc=none smtp.client-ip=74.125.227.141 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="ryFXBWcT" Received: by mail-pj2-f13.google.com with SMTP id d9443c01a7336-2dd53691be5so491125ad.1 for ; Thu, 17 Sep 2026 13:43:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1789677829; x=1790282629; 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:content-type; bh=9ia2nV/eyt+q8ysG7SMAINIwAk3HmajymljLtHeWJQM=; b=ryFXBWcTYawFB3BGv/pfWTAIDdTh29wQg6jfqCyPuJV0AVPE754oH8c5KPuT2lcB2u WvDdv0z11q4lrB9Ul0zcyv6HzN0cMrGVOY+R48cUvjatKoAZhHtJOA3lDpRBZrTjer3W ZgimzYwE9sEZw07NDOq/NkrnN/s/Vbb/9zOmHfllM8/JqklzbYog+cDrKhEqbcmZXumX fjwn+aNMNiN8vBEBfU5zP0UX+Uv81A8XA+onB6AHk/DFhlUiuGfWWJmwRQUCilZBFl02 6LLfxI0FMgrGoc0pcJ3FL/i2hDprFh3DIXwBRwbegVujtTWym8/kltGrIthkFl28bVqt q7QQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789677829; x=1790282629; 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:content-type; bh=9ia2nV/eyt+q8ysG7SMAINIwAk3HmajymljLtHeWJQM=; b=txmNwPtpoekWXkXn2zjpxt5GIu9m2VhavvJhSX+4d3ExFVXubSco/OLrRQo9TwwK3d QBtveL/69OSivhwp36iiN0PK4vuMRcowXikbHrypePnGHJbc+rvjuf5IW/SFX5yX2dPp MsGxOaZXbl+v8V3K6qrHEVHsmnfIjgIiTOBLhyQHM3r7OG77wO0Qn8Yp5Ey6pR7hrWmm ALGcrDBwcEu93yM+HROdT6fsUUWkDsZ7FDvGNurj3dlywC+KLNreuHU2cyzMN8j15qRa aoaXl1/sce6woET423tVfT4UgT5FWwX02PBcFMEhpOXe3nucSaj1a6E+k6fXqhEfVTEp wRlQ== X-Forwarded-Encrypted: i=1; AKwUvBwpnFanIXMCRDzRzjI2Wy2Q4JXHfHZP0EcLh3Qy/cJCVJlvmCk5sYivNt3mI39uHku+W7LZ8fOWl8lomG4=@vger.kernel.org X-Gm-Message-State: AFuF++nwhArQq3VQk4MMtK66hElTDVXkdqP/hR/JOzFNjsRhqsBohbDm ftxuyqJ78ucKdYhOc3tg4IqBv2bEOATa/DeTgJYmfLhxZLwz6CDcLFT7 X-Gm-Gg: AYBFou0G5K05wnAX/BUSfdvckS4Nlz8s1ivBelun2iTwua9w0FG/Fpbocf97o7sMpeI eUu2wuFBDk4+Sv+ve6z83n23H1ac84MIqCr2cqeYaoCPGFA+KHuh9pHM5ky1jmIKnzFI4vK676Y YgRBUdl/VxkbD+Jbk6vTxOySPkNMtRQlPl3uc1anUBW/IdrKUsb49W0KzBGyrM3ON0Sze7PDAdk h/SJqPYDU0eZXWQQDGMYKEh+YX83aBSOGjJSco1PQDdL1L8HwB1xVk80PLNOk5GVPLZ5MZcUHxU wskBrHSoZ+D5eIOb4rptViE625qt+JBuDtHyYYi9a2JbKvEcntqD88CPRtysu7wQX3hrWVD90vN ZwDweTr22iVC2dcK1261GUf9r7JgBPIcYrkbQ2TjXlJEdyJcjXZnm7D3bf26dyUSZtd+bpSZ+2X Z2NTGzi0GVi8pp4kR5IO22chk+SMbkP/Vu043tL2C0V1htbE/muZjQX40M1SQlYZ0dmTMZFn3pB s60HL4R6qeohSc5367ySOCCPuiS3ZIrdY/gdeJMK8sBtn2C7Kna+p5xEdJPRkzFVGvw7YnYY5c= X-Received: by 2002:a17:903:2312:b0:2cc:6018:f030 with SMTP id d9443c01a7336-2ddb1b899famr7318915ad.14.1789677829118; Thu, 17 Sep 2026 13:43:49 -0700 (PDT) Received: from Inspiron-14-5420.. ([2402:e280:21c6:671:6248:69c:ea81:be26]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-33c1943f4bcsm3620046eec.21.2026.09.17.13.43.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Sep 2026 13:43:48 -0700 (PDT) From: "Hemendra M. Naik" To: netdev@vger.kernel.org Cc: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, jiri@resnulli.us, jhs@mojatatu.com, shuah@kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, vishy0777@gmail.com, tahiliani@nitk.edu.in, "Hemendra M. Naik" Subject: [PATCH net-next v6 3/3] net/sched: pie: correct tc_pie_xstats field documentation Date: Fri, 18 Sep 2026 02:12:25 +0530 Message-Id: <20260917204225.275251-4-hemendranaik@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260917204225.275251-1-hemendranaik@gmail.com> References: <20260917204225.275251-1-hemendranaik@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 comments describing struct tc_pie_xstats do not match the values exported by the kernel. Update the delay field comment to microseconds (PSCHED_TICKS2NS() / NSEC_PER_USEC). Update avg_dq_rate to bytes/second (avg_dq_rate * PSCHED_TICKS_PER_SEC >> PIE_SCALE). Documentation-only; no UAPI layout or runtime change. Touch include/uapi/linux/pkt_sched.h only Signed-off-by: Hemendra M. Naik Signed-off-by: Vishal Kamath Signed-off-by: Mohit P. Tahiliani --- include/uapi/linux/pkt_sched.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h index 9c0c9787f0c3..969fa30efae7 100644 --- a/include/uapi/linux/pkt_sched.h +++ b/include/uapi/linux/pkt_sched.h @@ -920,9 +920,9 @@ enum { =20 struct tc_pie_xstats { __u64 prob; /* current probability */ - __u32 delay; /* current delay in ms */ + __u32 delay; /* current delay in microseconds */ __u32 avg_dq_rate; /* current average dq_rate in - * bits/pie_time + * bytes/second */ __u32 dq_rate_estimating; /* is avg_dq_rate being calculated? */ __u32 packets_in; /* total number of packets enqueued */ --=20 2.34.1