hc
2024-10-22 8ac6c7a54ed1b98d142dce24b11c6de6a1e239a5
kernel/net/sched/sch_dsmark.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /* net/sched/sch_dsmark.c - Differentiated Services field marker */
23
34 /* Written 1998-2000 by Werner Almesberger, EPFL ICA */
....@@ -132,7 +133,8 @@
132133 if (!opt)
133134 goto errout;
134135
135
- err = nla_parse_nested(tb, TCA_DSMARK_MAX, opt, dsmark_policy, NULL);
136
+ err = nla_parse_nested_deprecated(tb, TCA_DSMARK_MAX, opt,
137
+ dsmark_policy, NULL);
136138 if (err < 0)
137139 goto errout;
138140
....@@ -199,6 +201,7 @@
199201 static int dsmark_enqueue(struct sk_buff *skb, struct Qdisc *sch,
200202 struct sk_buff **to_free)
201203 {
204
+ unsigned int len = qdisc_pkt_len(skb);
202205 struct dsmark_qdisc_data *p = qdisc_priv(sch);
203206 int err;
204207
....@@ -271,7 +274,7 @@
271274 return err;
272275 }
273276
274
- qdisc_qstats_backlog_inc(sch, skb);
277
+ sch->qstats.backlog += len;
275278 sch->q.qlen++;
276279
277280 return NET_XMIT_SUCCESS;
....@@ -352,7 +355,8 @@
352355 if (err)
353356 return err;
354357
355
- err = nla_parse_nested(tb, TCA_DSMARK_MAX, opt, dsmark_policy, NULL);
358
+ err = nla_parse_nested_deprecated(tb, TCA_DSMARK_MAX, opt,
359
+ dsmark_policy, NULL);
356360 if (err < 0)
357361 goto errout;
358362
....@@ -404,8 +408,6 @@
404408 pr_debug("%s(sch %p,[qdisc %p])\n", __func__, sch, p);
405409 if (p->q)
406410 qdisc_reset(p->q);
407
- sch->qstats.backlog = 0;
408
- sch->q.qlen = 0;
409411 }
410412
411413 static void dsmark_destroy(struct Qdisc *sch)
....@@ -434,7 +436,7 @@
434436 tcm->tcm_handle = TC_H_MAKE(TC_H_MAJ(sch->handle), cl - 1);
435437 tcm->tcm_info = p->q->handle;
436438
437
- opts = nla_nest_start(skb, TCA_OPTIONS);
439
+ opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
438440 if (opts == NULL)
439441 goto nla_put_failure;
440442 if (nla_put_u8(skb, TCA_DSMARK_MASK, p->mv[cl - 1].mask) ||
....@@ -453,7 +455,7 @@
453455 struct dsmark_qdisc_data *p = qdisc_priv(sch);
454456 struct nlattr *opts = NULL;
455457
456
- opts = nla_nest_start(skb, TCA_OPTIONS);
458
+ opts = nla_nest_start_noflag(skb, TCA_OPTIONS);
457459 if (opts == NULL)
458460 goto nla_put_failure;
459461 if (nla_put_u16(skb, TCA_DSMARK_INDICES, p->indices))