aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2023-12-04 09:19:11 +0000
committerDavid Ahern <dsahern@kernel.org>2023-12-06 16:51:48 +0000
commit3086a339f681a1abd4f6717e3d7f348515c74761 (patch)
tree4f0010a7f92ba321e72b487f474eec7c24377020
parent567eb4e410458ba5e52ea47c1e60f947f5d65be9 (diff)
downloadiproute2-3086a339f681a1abd4f6717e3d7f348515c74761.tar.gz
tc: fq: reports stats added in linux-6.7
Report new fields added in linux-6.7: - fastpath : Number of packets that have used the fast path. - band[012]_pkts : Number of packets currently queued per band. - band[012]_drops : Counters of dropped packets, per band (only printed if not zero) Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David Ahern <dsahern@kernel.org>
-rw-r--r--tc/q_fq.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/tc/q_fq.c b/tc/q_fq.c
index 08bfbf4ef..7f8a2b80d 100644
--- a/tc/q_fq.c
+++ b/tc/q_fq.c
@@ -510,6 +510,10 @@ static int fq_print_xstats(struct qdisc_util *qu, FILE *f,
print_uint(PRINT_ANY, "throttled", " throttled %u)",
st->throttled_flows);
+ print_uint(PRINT_ANY, "band0_pkts", " band0_pkts %u", st->band_pkt_count[0]);
+ print_uint(PRINT_ANY, "band1_pkts", " band1_pkts %u", st->band_pkt_count[1]);
+ print_uint(PRINT_ANY, "band2_pkts", " band2_pkts %u", st->band_pkt_count[2]);
+
if (st->time_next_delayed_flow > 0) {
print_lluint(PRINT_JSON, "next_packet_delay", NULL,
st->time_next_delayed_flow);
@@ -522,6 +526,10 @@ static int fq_print_xstats(struct qdisc_util *qu, FILE *f,
print_lluint(PRINT_ANY, "highprio", " highprio %llu",
st->highprio_packets);
+ if (st->fastpath_packets)
+ print_lluint(PRINT_ANY, "fastpath", " fastpath %llu",
+ st->fastpath_packets);
+
if (st->tcp_retrans)
print_lluint(PRINT_ANY, "retrans", " retrans %llu",
st->tcp_retrans);
@@ -544,7 +552,10 @@ static int fq_print_xstats(struct qdisc_util *qu, FILE *f,
st->flows_plimit);
if (st->pkts_too_long || st->allocation_errors ||
- st->horizon_drops || st->horizon_caps) {
+ st->horizon_drops || st->horizon_caps ||
+ st->band_drops[0] ||
+ st->band_drops[1] ||
+ st->band_drops[2]) {
print_nl();
if (st->pkts_too_long)
print_lluint(PRINT_ANY, "pkts_too_long",
@@ -562,6 +573,18 @@ static int fq_print_xstats(struct qdisc_util *qu, FILE *f,
print_lluint(PRINT_ANY, "horizon_caps",
" horizon_caps %llu",
st->horizon_caps);
+ if (st->band_drops[0])
+ print_lluint(PRINT_ANY, "band0_drops",
+ " band0_drops %llu",
+ st->band_drops[0]);
+ if (st->band_drops[1])
+ print_lluint(PRINT_ANY, "band1_drops",
+ " band1_drops %llu",
+ st->band_drops[1]);
+ if (st->band_drops[2])
+ print_lluint(PRINT_ANY, "band2_drops",
+ " band2_drops %llu",
+ st->band_drops[2]);
}
return 0;