From: Stephen Hemminger Date: Wed, 11 Jan 2023 17:13:00 +0000 (-0800) Subject: tc: remove support for rr qdisc X-Git-Tag: v6.2.0~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4dc60c0179204e966b9328a323205fbf668d120b;p=thirdparty%2Fiproute2.git tc: remove support for rr qdisc The Round-Robin qdisc was removed in kernel version 2.6.27. Remove code and man page references from iproute. Signed-off-by: Stephen Hemminger --- diff --git a/bash-completion/tc b/bash-completion/tc index 9f16d0d48..8352cc94e 100644 --- a/bash-completion/tc +++ b/bash-completion/tc @@ -3,7 +3,7 @@ # Copyright 2016 Quentin Monnet QDISC_KIND=' choke codel bfifo pfifo pfifo_head_drop fq fq_codel gred hhf \ - mqprio multiq netem pfifo_fast pie fq_pie red rr sfb sfq tbf atm \ + mqprio multiq netem pfifo_fast pie fq_pie red sfb sfq tbf atm \ cbq drr dsmark hfsc htb prio qfq ' FILTER_KIND=' basic bpf cgroup flow flower fw route rsvp tcindex u32 matchall ' ACTION_KIND=' gact mirred bpf sample ' @@ -339,7 +339,7 @@ _tc_qdisc_options() bandwidth ecn harddrop' return 0 ;; - rr|prio) + prio) _tc_once_attr 'bands priomap multiqueue' return 0 ;; diff --git a/man/man8/tc.8 b/man/man8/tc.8 index 2969fb55a..d436d4647 100644 --- a/man/man8/tc.8 +++ b/man/man8/tc.8 @@ -361,10 +361,6 @@ Random Early Detection simulates physical congestion by randomly dropping packets when nearing configured bandwidth allocation. Well suited to very large bandwidth applications. .TP -rr -Round-Robin qdisc with support for multiqueue network devices. Removed from -Linux since kernel version 2.6.27. -.TP sfb Stochastic Fair Blue is a classless qdisc to manage congestion based on packet loss and link utilization history while trying to prevent diff --git a/tc/Makefile b/tc/Makefile index 5a517af20..98d2ee597 100644 --- a/tc/Makefile +++ b/tc/Makefile @@ -15,7 +15,6 @@ TCMODULES += q_prio.o TCMODULES += q_skbprio.o TCMODULES += q_tbf.o TCMODULES += q_cbq.o -TCMODULES += q_rr.o TCMODULES += q_multiq.o TCMODULES += q_netem.o TCMODULES += q_choke.o diff --git a/tc/q_rr.c b/tc/q_rr.c deleted file mode 100644 index 843a4faee..000000000 --- a/tc/q_rr.c +++ /dev/null @@ -1,119 +0,0 @@ -/* - * q_rr.c RR. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version - * 2 of the License, or (at your option) any later version. - * - * Authors: PJ Waskiewicz, - * Original Authors: Alexey Kuznetsov, (from PRIO) - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "utils.h" -#include "tc_util.h" - -static void explain(void) -{ - fprintf(stderr, "Usage: ... rr bands NUMBER priomap P1 P2... [multiqueue]\n"); -} - - -static int rr_parse_opt(struct qdisc_util *qu, int argc, char **argv, struct nlmsghdr *n, const char *dev) -{ - int pmap_mode = 0; - int idx = 0; - struct tc_prio_qopt opt = {3, { 1, 2, 2, 2, 1, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1 } }; - struct rtattr *nest; - unsigned char mq = 0; - - while (argc > 0) { - if (strcmp(*argv, "bands") == 0) { - if (pmap_mode) - explain(); - NEXT_ARG(); - if (get_integer(&opt.bands, *argv, 10)) { - fprintf(stderr, "Illegal \"bands\"\n"); - return -1; - } - } else if (strcmp(*argv, "priomap") == 0) { - if (pmap_mode) { - fprintf(stderr, "Error: duplicate priomap\n"); - return -1; - } - pmap_mode = 1; - } else if (strcmp(*argv, "help") == 0) { - explain(); - return -1; - } else if (strcmp(*argv, "multiqueue") == 0) { - mq = 1; - } else { - unsigned int band; - - if (!pmap_mode) { - fprintf(stderr, "What is \"%s\"?\n", *argv); - explain(); - return -1; - } - if (get_unsigned(&band, *argv, 10)) { - fprintf(stderr, "Illegal \"priomap\" element\n"); - return -1; - } - if (band > opt.bands) { - fprintf(stderr, "\"priomap\" element is out of bands\n"); - return -1; - } - if (idx > TC_PRIO_MAX) { - fprintf(stderr, "\"priomap\" index > TC_RR_MAX=%u\n", TC_PRIO_MAX); - return -1; - } - opt.priomap[idx++] = band; - } - argc--; argv++; - } - - nest = addattr_nest_compat(n, 1024, TCA_OPTIONS, &opt, sizeof(opt)); - if (mq) - addattr_l(n, 1024, TCA_PRIO_MQ, NULL, 0); - addattr_nest_compat_end(n, nest); - return 0; -} - -static int rr_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt) -{ - int i; - struct tc_prio_qopt *qopt; - struct rtattr *tb[TCA_PRIO_MAX + 1]; - - if (opt == NULL) - return 0; - - if (parse_rtattr_nested_compat(tb, TCA_PRIO_MAX, opt, qopt, - sizeof(*qopt))) - return -1; - - fprintf(f, "bands %u priomap ", qopt->bands); - for (i = 0; i <= TC_PRIO_MAX; i++) - fprintf(f, " %d", qopt->priomap[i]); - - if (tb[TCA_PRIO_MQ]) - fprintf(f, " multiqueue: %s ", - rta_getattr_u8(tb[TCA_PRIO_MQ]) ? "on" : "off"); - - return 0; -} - -struct qdisc_util rr_qdisc_util = { - .id = "rr", - .parse_qopt = rr_parse_opt, - .print_qopt = rr_print_opt, -};