diff options
author | Eric Dumazet <edumazet@google.com> | 2023-12-04 09:19:11 +0000 |
---|---|---|
committer | David Ahern <dsahern@kernel.org> | 2023-12-06 16:51:48 +0000 |
commit | 3086a339f681a1abd4f6717e3d7f348515c74761 (patch) | |
tree | 4f0010a7f92ba321e72b487f474eec7c24377020 | |
parent | 567eb4e410458ba5e52ea47c1e60f947f5d65be9 (diff) | |
download | iproute2-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.c | 25 |
1 files changed, 24 insertions, 1 deletions
@@ -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; |