From: David Ward <david.ward@ll.mit.edu>
To: netdev@vger.kernel.org
Cc: David Ward <david.ward@ll.mit.edu>
Subject: [PATCH iproute2 09/10] tc: gred: Adopt the term VQ in the command syntax and output
Date: Mon, 18 May 2015 11:35:13 -0400 [thread overview]
Message-ID: <1431963314-56420-10-git-send-email-david.ward@ll.mit.edu> (raw)
In-Reply-To: <1431963314-56420-1-git-send-email-david.ward@ll.mit.edu>
In the GRED kernel source code, both of the terms "drop parameters"
(DP) and "virtual queue" (VQ) are used to refer to the same thing.
Each "DP" is better understood as a "set of drop parameters", since
it has values for limit, min, max, avpkt, etc. This terminology can
result in confusion when creating a GRED qdisc having multiple DPs.
Netlink attributes and struct members with the DP name seem to have
been left intact for compatibility, while the term VQ was otherwise
adopted in the code, which is more intuitive.
Use the VQ term in the tc command syntax and output (but maintain
compatibility with the old syntax).
Rewrite the usage text to be concise and similar to other qdiscs.
Signed-off-by: David Ward <david.ward@ll.mit.edu>
---
tc/q_gred.c | 37 ++++++++++++++++++-------------------
1 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/tc/q_gred.c b/tc/q_gred.c
index 0192d9f..463d725 100644
--- a/tc/q_gred.c
+++ b/tc/q_gred.c
@@ -37,14 +37,11 @@
static void explain(void)
{
- fprintf(stderr, "Usage: ... gred DP drop-probability limit BYTES "
- "min BYTES max BYTES\n");
- fprintf(stderr, " avpkt BYTES burst PACKETS probability PROBABILITY "
- "bandwidth KBPS\n");
- fprintf(stderr, " [prio value]\n");
- fprintf(stderr," OR ...\n");
- fprintf(stderr," gred setup DPs <num of DPs> default <default DP> "
- "[grio]\n");
+ fprintf(stderr, "Usage: tc qdisc { add | replace | change } ... gred setup vqs NUMBER\n");
+ fprintf(stderr, " default DEFAULT_VQ [ grio ]\n");
+ fprintf(stderr, " tc qdisc change ... gred vq VQ [ prio VALUE ] limit BYTES\n");
+ fprintf(stderr, " min BYTES max BYTES avpkt BYTES [ burst PACKETS ]\n");
+ fprintf(stderr, " [ probability PROBABILITY ] [ bandwidth KBPS ]\n");
}
static int init_gred(struct qdisc_util *qu, int argc, char **argv,
@@ -58,20 +55,21 @@ static int init_gred(struct qdisc_util *qu, int argc, char **argv,
while (argc > 0) {
DPRINTF(stderr,"init_gred: invoked with %s\n",*argv);
- if (strcmp(*argv, "DPs") == 0) {
+ if (strcmp(*argv, "vqs") == 0 ||
+ strcmp(*argv, "DPs") == 0) {
NEXT_ARG();
if (get_unsigned(&opt.DPs, *argv, 10)) {
- fprintf(stderr, "Illegal \"DPs\"\n");
+ fprintf(stderr, "Illegal \"vqs\"\n");
return -1;
} else if (opt.DPs > MAX_DPs) {
- fprintf(stderr, "GRED: only %u DPs are "
+ fprintf(stderr, "GRED: only %u VQs are "
"currently supported\n", MAX_DPs);
return -1;
}
} else if (strcmp(*argv, "default") == 0) {
if (opt.DPs == 0) {
fprintf(stderr, "\"default\" must be defined "
- "after \"DPs\"\n");
+ "after \"vqs\"\n");
return -1;
}
NEXT_ARG();
@@ -80,7 +78,7 @@ static int init_gred(struct qdisc_util *qu, int argc, char **argv,
return -1;
} else if (opt.def_DP >= opt.DPs) {
fprintf(stderr, "\"default\" must be less than "
- "\"DPs\"\n");
+ "\"vqs\"\n");
return -1;
}
} else if (strcmp(*argv, "grio") == 0) {
@@ -155,13 +153,14 @@ static int gred_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct n
return -1;
}
ok++;
- } else if (strcmp(*argv, "DP") == 0) {
+ } else if (strcmp(*argv, "vq") == 0 ||
+ strcmp(*argv, "DP") == 0) {
NEXT_ARG();
if (get_unsigned(&opt.DP, *argv, 10)) {
- fprintf(stderr, "Illegal \"DP\"\n");
+ fprintf(stderr, "Illegal \"vq\"\n");
return -1;
} else if (opt.DP >= MAX_DPs) {
- fprintf(stderr, "GRED: only %u DPs are "
+ fprintf(stderr, "GRED: only %u VQs are "
"currently supported\n", MAX_DPs);
return -1;
} /* need a better error check */
@@ -216,7 +215,7 @@ static int gred_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct n
}
if (opt.DP == MAX_DPs || !opt.limit || !opt.qth_min || !opt.qth_max ||
!avpkt) {
- fprintf(stderr, "Required parameter (DP, limit, min, max, "
+ fprintf(stderr, "Required parameter (vq, limit, min, max, "
"avpkt) is missing\n");
return -1;
}
@@ -292,14 +291,14 @@ static int gred_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
/* Bad hack! should really return a proper message as shown above*/
- fprintf(f, "DPs %u default %u %s",
+ fprintf(f, "vqs %u default %u %s",
sopt->DPs,
sopt->def_DP,
sopt->grio ? "grio " : "");
for (i=0;i<MAX_DPs;i++, qopt++) {
if (qopt->DP >= MAX_DPs) continue;
- fprintf(f, "\n DP %u prio %hhu limit %s min %s max %s ",
+ fprintf(f, "\n vq %u prio %hhu limit %s min %s max %s ",
qopt->DP,
qopt->prio,
sprint_size(qopt->limit, b1),
--
1.7.1
next prev parent reply other threads:[~2015-05-18 15:35 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-18 15:35 [PATCH iproute2 00/10] RED and GRED fixes, plus TCA_GRED_LIMIT support David Ward
2015-05-18 15:35 ` [PATCH iproute2 01/10] tc: red, gred: Rename overloaded variable wlog David Ward
2015-05-21 21:29 ` Stephen Hemminger
2015-05-18 15:35 ` [PATCH iproute2 02/10] tc: red, gred: Fix format specifier in burst size warning David Ward
2015-05-18 15:35 ` [PATCH iproute2 03/10] tc: red, gred: Notify when using the default value for "bandwidth" David Ward
2015-05-18 15:35 ` [PATCH iproute2 04/10] tc: red: Mark "bandwidth" parameter as optional in usage text David Ward
2015-05-18 15:35 ` [PATCH iproute2 05/10] tc: gred: Fix whitespace issues in code David Ward
2015-05-18 15:35 ` [PATCH iproute2 06/10] tc: gred: Print usage text if no arguments appear after "gred" David Ward
2015-05-18 15:35 ` [PATCH iproute2 07/10] tc: gred: Improve parameter/statistics output David Ward
2015-05-18 15:35 ` [PATCH iproute2 08/10] tc: gred: Handle unsigned values properly in option parsing/printing David Ward
2015-05-18 15:35 ` David Ward [this message]
2015-05-18 15:35 ` [PATCH iproute2/net-next] tc: gred: Add support for TCA_GRED_LIMIT attribute David Ward
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1431963314-56420-10-git-send-email-david.ward@ll.mit.edu \
--to=david.ward@ll.mit.edu \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).