diff options
author | Eric Dumazet <edumazet@google.com> | 2020-04-27 10:51:55 -0700 |
---|---|---|
committer | Stephen Hemminger <stephen@networkplumber.org> | 2020-04-27 14:56:42 -0700 |
commit | 7868f802e2d93a9f6e2d64a6fc608445a33c8a8d (patch) | |
tree | b99adedc15c7847954bbe173551a76fb9ead8782 | |
parent | d27fc6390ce32ecdba6324e22b1c341791c5c63f (diff) | |
download | iproute2-7868f802e2d93a9f6e2d64a6fc608445a33c8a8d.tar.gz |
tc: fq_codel: add drop_batch parameter
Commit 9d18562a2278 ("fq_codel: add batch ability to fq_codel_drop()")
added the new TCA_FQ_CODEL_DROP_BATCH_SIZE parameter, set by default to 64.
Add to tc command the ability to get/set the drop_batch
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r-- | tc/q_fq_codel.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/tc/q_fq_codel.c b/tc/q_fq_codel.c index 1c6cf1e0d..1a51302e0 100644 --- a/tc/q_fq_codel.c +++ b/tc/q_fq_codel.c @@ -54,12 +54,14 @@ static void explain(void) "[ memory_limit BYTES ]\n" "[ target TIME ] [ interval TIME ]\n" "[ quantum BYTES ] [ [no]ecn ]\n" - "[ ce_threshold TIME ]\n"); + "[ ce_threshold TIME ]\n" + "[ drop_batch SIZE ]\n"); } static int fq_codel_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n, const char *dev) { + unsigned int drop_batch = 0; unsigned int limit = 0; unsigned int flows = 0; unsigned int target = 0; @@ -89,6 +91,12 @@ static int fq_codel_parse_opt(struct qdisc_util *qu, int argc, char **argv, fprintf(stderr, "Illegal \"quantum\"\n"); return -1; } + } else if (strcmp(*argv, "drop_batch") == 0) { + NEXT_ARG(); + if (get_unsigned(&drop_batch, *argv, 0)) { + fprintf(stderr, "Illegal \"drop_batch\"\n"); + return -1; + } } else if (strcmp(*argv, "target") == 0) { NEXT_ARG(); if (get_time(&target, *argv)) { @@ -147,6 +155,8 @@ static int fq_codel_parse_opt(struct qdisc_util *qu, int argc, char **argv, if (memory != ~0U) addattr_l(n, 1024, TCA_FQ_CODEL_MEMORY_LIMIT, &memory, sizeof(memory)); + if (drop_batch) + addattr_l(n, 1024, TCA_FQ_CODEL_DROP_BATCH_SIZE, &drop_batch, sizeof(drop_batch)); addattr_nest_end(n, tail); return 0; @@ -163,6 +173,7 @@ static int fq_codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt unsigned int quantum; unsigned int ce_threshold; unsigned int memory_limit; + unsigned int drop_batch; SPRINT_BUF(b1); @@ -220,6 +231,12 @@ static int fq_codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt if (ecn) print_bool(PRINT_ANY, "ecn", "ecn ", true); } + if (tb[TCA_FQ_CODEL_DROP_BATCH_SIZE] && + RTA_PAYLOAD(tb[TCA_FQ_CODEL_DROP_BATCH_SIZE]) >= sizeof(__u32)) { + drop_batch = rta_getattr_u32(tb[TCA_FQ_CODEL_DROP_BATCH_SIZE]); + if (drop_batch) + print_uint(PRINT_ANY, "drop_batch", "drop_batch %u ", drop_batch); + } return 0; } |