On Sun, 16 Mar 2025 16:39:17 +0100 chia-yu.chang@xxxxxxxxxxxxxxxxxxx wrote: > +static int dualpi2_print_xstats(struct qdisc_util *qu, FILE *f, > + struct rtattr *xstats) > +{ > + struct tc_dualpi2_xstats *st; > + > + if (xstats == NULL) > + return 0; > + > + if (RTA_PAYLOAD(xstats) < sizeof(*st)) > + return -1; > + > + st = RTA_DATA(xstats); > + fprintf(f, "prob %f delay_c %uus delay_l %uus\n", > + (double)st->prob / (double)MAX_PROB, st->delay_c, st->delay_l); > + fprintf(f, "pkts_in_c %u pkts_in_l %u maxq %u\n", > + st->packets_in_c, st->packets_in_l, st->maxq); > + fprintf(f, "ecn_mark %u step_marks %u\n", st->ecn_mark, st->step_marks); > + fprintf(f, "credit %d (%c)\n", st->credit, st->credit > 0 ? 'C' : 'L'); > + fprintf(f, "memory used %u (max %u) of memory limit %u\n", > + st->memory_used, st->max_memory_used, st->memory_limit); > + return 0; > + You should support JSON for the stats as well.