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>
This commit is contained in:
parent
d27fc6390c
commit
7868f802e2
|
|
@ -54,12 +54,14 @@ static void explain(void)
|
||||||
"[ memory_limit BYTES ]\n"
|
"[ memory_limit BYTES ]\n"
|
||||||
"[ target TIME ] [ interval TIME ]\n"
|
"[ target TIME ] [ interval TIME ]\n"
|
||||||
"[ quantum BYTES ] [ [no]ecn ]\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,
|
static int fq_codel_parse_opt(struct qdisc_util *qu, int argc, char **argv,
|
||||||
struct nlmsghdr *n, const char *dev)
|
struct nlmsghdr *n, const char *dev)
|
||||||
{
|
{
|
||||||
|
unsigned int drop_batch = 0;
|
||||||
unsigned int limit = 0;
|
unsigned int limit = 0;
|
||||||
unsigned int flows = 0;
|
unsigned int flows = 0;
|
||||||
unsigned int target = 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");
|
fprintf(stderr, "Illegal \"quantum\"\n");
|
||||||
return -1;
|
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) {
|
} else if (strcmp(*argv, "target") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
if (get_time(&target, *argv)) {
|
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)
|
if (memory != ~0U)
|
||||||
addattr_l(n, 1024, TCA_FQ_CODEL_MEMORY_LIMIT,
|
addattr_l(n, 1024, TCA_FQ_CODEL_MEMORY_LIMIT,
|
||||||
&memory, sizeof(memory));
|
&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);
|
addattr_nest_end(n, tail);
|
||||||
return 0;
|
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 quantum;
|
||||||
unsigned int ce_threshold;
|
unsigned int ce_threshold;
|
||||||
unsigned int memory_limit;
|
unsigned int memory_limit;
|
||||||
|
unsigned int drop_batch;
|
||||||
|
|
||||||
SPRINT_BUF(b1);
|
SPRINT_BUF(b1);
|
||||||
|
|
||||||
|
|
@ -220,6 +231,12 @@ static int fq_codel_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt
|
||||||
if (ecn)
|
if (ecn)
|
||||||
print_bool(PRINT_ANY, "ecn", "ecn ", true);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue