tc: remove dsmark qdisc

The kernel has removed support for dsmark qdisc in commit
bbe77c14ee61 (net/sched: Retire dsmark qdisc, 2023-02-14)

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
This commit is contained in:
Stephen Hemminger 2023-10-30 11:35:32 -07:00
parent bc0c1661eb
commit 11e6e783b6
5 changed files with 1 additions and 206 deletions

View File

@ -4,7 +4,7 @@
QDISC_KIND=' choke codel bfifo pfifo pfifo_head_drop fq fq_codel gred hhf \ QDISC_KIND=' choke codel bfifo pfifo pfifo_head_drop fq fq_codel gred hhf \
mqprio multiq netem pfifo_fast pie fq_pie red sfb sfq tbf atm \ mqprio multiq netem pfifo_fast pie fq_pie red sfb sfq tbf atm \
cbq drr dsmark hfsc htb prio qfq ' cbq drr hfsc htb prio qfq '
FILTER_KIND=' basic bpf cgroup flow flower fw route u32 matchall ' FILTER_KIND=' basic bpf cgroup flow flower fw route u32 matchall '
ACTION_KIND=' gact mirred bpf sample ' ACTION_KIND=' gact mirred bpf sample '
@ -362,10 +362,6 @@ _tc_qdisc_options()
_tc_once_attr 'bandwidth avpkt mpu cell ewma' _tc_once_attr 'bandwidth avpkt mpu cell ewma'
return 0 return 0
;; ;;
dsmark)
_tc_once_attr 'indices default_index set_tc_index'
return 0
;;
hfsc) hfsc)
_tc_once_attr 'default' _tc_once_attr 'default'
return 0 return 0

View File

@ -403,10 +403,6 @@ useful e.g. for using RED qdiscs with different settings for particular
traffic. There is no default class \-\- if a packet cannot be classified, it is traffic. There is no default class \-\- if a packet cannot be classified, it is
dropped. dropped.
.TP .TP
DSMARK
Classify packets based on TOS field, change TOS field of packets based on
classification.
.TP
ETS ETS
The ETS qdisc is a queuing discipline that merges functionality of PRIO and DRR The ETS qdisc is a queuing discipline that merges functionality of PRIO and DRR
qdiscs in one scheduler. ETS makes it easy to configure a set of strict and qdiscs in one scheduler. ETS makes it easy to configure a set of strict and

View File

@ -26,7 +26,6 @@ TCMODULES += f_bpf.o
TCMODULES += f_flow.o TCMODULES += f_flow.o
TCMODULES += f_cgroup.o TCMODULES += f_cgroup.o
TCMODULES += f_flower.o TCMODULES += f_flower.o
TCMODULES += q_dsmark.o
TCMODULES += q_gred.o TCMODULES += q_gred.o
TCMODULES += q_ingress.o TCMODULES += q_ingress.o
TCMODULES += q_hfsc.o TCMODULES += q_hfsc.o

View File

@ -1,165 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0 */
/*
* q_dsmark.c Differentiated Services field marking.
*
* Hacked 1998,1999 by Werner Almesberger, EPFL ICA
*/
#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: dsmark indices INDICES [ default_index DEFAULT_INDEX ] [ set_tc_index ]\n");
}
static int dsmark_parse_opt(struct qdisc_util *qu, int argc, char **argv,
struct nlmsghdr *n, const char *dev)
{
struct rtattr *tail;
__u16 ind;
char *end;
int dflt, set_tc_index;
ind = set_tc_index = 0;
dflt = -1;
while (argc > 0) {
if (!strcmp(*argv, "indices")) {
NEXT_ARG();
ind = strtoul(*argv, &end, 0);
if (*end) {
explain();
return -1;
}
} else if (!strcmp(*argv,"default_index") || !strcmp(*argv,
"default")) {
NEXT_ARG();
dflt = strtoul(*argv, &end, 0);
if (*end) {
explain();
return -1;
}
} else if (!strcmp(*argv,"set_tc_index")) {
set_tc_index = 1;
} else {
explain();
return -1;
}
argc--;
argv++;
}
if (!ind) {
explain();
return -1;
}
tail = addattr_nest(n, 1024, TCA_OPTIONS);
addattr_l(n, 1024, TCA_DSMARK_INDICES, &ind, sizeof(ind));
if (dflt != -1) {
__u16 tmp = dflt;
addattr_l(n, 1024, TCA_DSMARK_DEFAULT_INDEX, &tmp, sizeof(tmp));
}
if (set_tc_index)
addattr_l(n, 1024, TCA_DSMARK_SET_TC_INDEX, NULL, 0);
addattr_nest_end(n, tail);
return 0;
}
static void explain_class(void)
{
fprintf(stderr, "Usage: ... dsmark [ mask MASK ] [ value VALUE ]\n");
}
static int dsmark_parse_class_opt(struct qdisc_util *qu, int argc, char **argv,
struct nlmsghdr *n, const char *dev)
{
struct rtattr *tail;
__u8 tmp;
char *end;
tail = addattr_nest(n, 1024, TCA_OPTIONS);
while (argc > 0) {
if (!strcmp(*argv, "mask")) {
NEXT_ARG();
tmp = strtoul(*argv, &end, 0);
if (*end) {
explain_class();
return -1;
}
addattr_l(n, 1024, TCA_DSMARK_MASK, &tmp, 1);
} else if (!strcmp(*argv,"value")) {
NEXT_ARG();
tmp = strtoul(*argv, &end, 0);
if (*end) {
explain_class();
return -1;
}
addattr_l(n, 1024, TCA_DSMARK_VALUE, &tmp, 1);
} else {
explain_class();
return -1;
}
argc--;
argv++;
}
addattr_nest_end(n, tail);
return 0;
}
static int dsmark_print_opt(struct qdisc_util *qu, FILE *f, struct rtattr *opt)
{
struct rtattr *tb[TCA_DSMARK_MAX+1];
if (!opt) return 0;
parse_rtattr(tb, TCA_DSMARK_MAX, RTA_DATA(opt), RTA_PAYLOAD(opt));
if (tb[TCA_DSMARK_MASK]) {
if (!RTA_PAYLOAD(tb[TCA_DSMARK_MASK]))
fprintf(stderr, "dsmark: empty mask\n");
else fprintf(f, "mask 0x%02x ",
rta_getattr_u8(tb[TCA_DSMARK_MASK]));
}
if (tb[TCA_DSMARK_VALUE]) {
if (!RTA_PAYLOAD(tb[TCA_DSMARK_VALUE]))
fprintf(stderr, "dsmark: empty value\n");
else fprintf(f, "value 0x%02x ",
rta_getattr_u8(tb[TCA_DSMARK_VALUE]));
}
if (tb[TCA_DSMARK_INDICES]) {
if (RTA_PAYLOAD(tb[TCA_DSMARK_INDICES]) < sizeof(__u16))
fprintf(stderr, "dsmark: indices too short\n");
else fprintf(f, "indices 0x%04x ",
rta_getattr_u16(tb[TCA_DSMARK_INDICES]));
}
if (tb[TCA_DSMARK_DEFAULT_INDEX]) {
if (RTA_PAYLOAD(tb[TCA_DSMARK_DEFAULT_INDEX]) < sizeof(__u16))
fprintf(stderr, "dsmark: default_index too short\n");
else fprintf(f, "default_index 0x%04x ",
rta_getattr_u16(tb[TCA_DSMARK_DEFAULT_INDEX]));
}
if (tb[TCA_DSMARK_SET_TC_INDEX]) fprintf(f, "set_tc_index ");
return 0;
}
struct qdisc_util dsmark_qdisc_util = {
.id = "dsmark",
.parse_qopt = dsmark_parse_opt,
.print_qopt = dsmark_print_opt,
.parse_copt = dsmark_parse_class_opt,
.print_copt = dsmark_print_opt,
};

View File

@ -1,31 +0,0 @@
#!/bin/sh
# vim: ft=sh
. lib/generic.sh
ts_qdisc_available "dsmark"
if [ $? -eq 0 ]; then
ts_log "dsmark: Unsupported by $TC, skipping"
exit 127
fi
ts_tc "dsmark" "dsmark root qdisc creation" \
qdisc add dev $DEV root handle 10:0 \
dsmark indices 64 default_index 1 set_tc_index
ts_tc "dsmark" "dsmark class 1 creation" \
class change dev $DEV parent 10:0 classid 10:12 \
dsmark mask 0xff value 2
ts_tc "dsmark" "dsmark class 2 creation" \
class change dev $DEV parent 10:0 classid 10:13 \
dsmark mask 0xfc value 4
ts_tc "dsmark" "dsmark dump qdisc" \
qdisc list dev $DEV
ts_tc "dsmark" "dsmark dump class" \
class list dev $DEV parent 10:0
ts_tc "dsmark" "generic qdisc tree deletion" \
qdisc del dev $DEV root