[PATCH iproute] tc: remove support for rr qdisc
From: Stephen Hemminger <stephen@networkplumber.org>
Date: 2023-01-11 17:14:38
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 <stephen@networkplumber.org> --- bash-completion/tc | 4 +- man/man8/tc.8 | 4 -- tc/Makefile | 1 - tc/q_rr.c | 119 --------------------------------------------- 4 files changed, 2 insertions(+), 126 deletions(-) delete mode 100644 tc/q_rr.c
diff --git a/bash-completion/tc b/bash-completion/tc
index 9f16d0d481e0..8352cc94e391 100644
--- a/bash-completion/tc
+++ b/bash-completion/tc@@ -3,7 +3,7 @@ # Copyright 2016 Quentin Monnet <quentin.monnet@6wind.com> 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 2969fb55aafc..d436d46472af 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 5a517af20b7c..98d2ee597a1e 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 843a4faeef41..000000000000
--- 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, <peter.p.waskiewicz.jr@intel.com> - * Original Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> (from PRIO) - */ - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <fcntl.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <string.h> - -#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, -};
--
2.39.0