diff options
Diffstat (limited to 'net/sched')
| -rw-r--r-- | net/sched/cls_api.c | 7 | ||||
| -rw-r--r-- | net/sched/cls_basic.c | 8 | ||||
| -rw-r--r-- | net/sched/cls_bpf.c | 8 | ||||
| -rw-r--r-- | net/sched/cls_cgroup.c | 3 | ||||
| -rw-r--r-- | net/sched/cls_flow.c | 3 | ||||
| -rw-r--r-- | net/sched/cls_flower.c | 8 | ||||
| -rw-r--r-- | net/sched/cls_fw.c | 10 | ||||
| -rw-r--r-- | net/sched/cls_matchall.c | 8 | ||||
| -rw-r--r-- | net/sched/cls_route.c | 6 | ||||
| -rw-r--r-- | net/sched/cls_rsvp.h | 2 | ||||
| -rw-r--r-- | net/sched/cls_tcindex.c | 6 | ||||
| -rw-r--r-- | net/sched/cls_u32.c | 10 |
12 files changed, 48 insertions, 31 deletions
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 06797c2e8102..f365970dc68c 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c | |||
| @@ -1423,7 +1423,8 @@ void tcf_exts_destroy(struct tcf_exts *exts) | |||
| 1423 | EXPORT_SYMBOL(tcf_exts_destroy); | 1423 | EXPORT_SYMBOL(tcf_exts_destroy); |
| 1424 | 1424 | ||
| 1425 | int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb, | 1425 | int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb, |
| 1426 | struct nlattr *rate_tlv, struct tcf_exts *exts, bool ovr) | 1426 | struct nlattr *rate_tlv, struct tcf_exts *exts, bool ovr, |
| 1427 | struct netlink_ext_ack *extack) | ||
| 1427 | { | 1428 | { |
| 1428 | #ifdef CONFIG_NET_CLS_ACT | 1429 | #ifdef CONFIG_NET_CLS_ACT |
| 1429 | { | 1430 | { |
| @@ -1456,8 +1457,10 @@ int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb, | |||
| 1456 | } | 1457 | } |
| 1457 | #else | 1458 | #else |
| 1458 | if ((exts->action && tb[exts->action]) || | 1459 | if ((exts->action && tb[exts->action]) || |
| 1459 | (exts->police && tb[exts->police])) | 1460 | (exts->police && tb[exts->police])) { |
| 1461 | NL_SET_ERR_MSG(extack, "Classifier actions are not supported per compile options (CONFIG_NET_CLS_ACT)"); | ||
| 1460 | return -EOPNOTSUPP; | 1462 | return -EOPNOTSUPP; |
| 1463 | } | ||
| 1461 | #endif | 1464 | #endif |
| 1462 | 1465 | ||
| 1463 | return 0; | 1466 | return 0; |
diff --git a/net/sched/cls_basic.c b/net/sched/cls_basic.c index 2cc38cd71938..b7bcf67641bf 100644 --- a/net/sched/cls_basic.c +++ b/net/sched/cls_basic.c | |||
| @@ -152,11 +152,12 @@ static const struct nla_policy basic_policy[TCA_BASIC_MAX + 1] = { | |||
| 152 | static int basic_set_parms(struct net *net, struct tcf_proto *tp, | 152 | static int basic_set_parms(struct net *net, struct tcf_proto *tp, |
| 153 | struct basic_filter *f, unsigned long base, | 153 | struct basic_filter *f, unsigned long base, |
| 154 | struct nlattr **tb, | 154 | struct nlattr **tb, |
| 155 | struct nlattr *est, bool ovr) | 155 | struct nlattr *est, bool ovr, |
| 156 | struct netlink_ext_ack *extack) | ||
| 156 | { | 157 | { |
| 157 | int err; | 158 | int err; |
| 158 | 159 | ||
| 159 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr); | 160 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr, extack); |
| 160 | if (err < 0) | 161 | if (err < 0) |
| 161 | return err; | 162 | return err; |
| 162 | 163 | ||
| @@ -222,7 +223,8 @@ static int basic_change(struct net *net, struct sk_buff *in_skb, | |||
| 222 | fnew->handle = idr_index; | 223 | fnew->handle = idr_index; |
| 223 | } | 224 | } |
| 224 | 225 | ||
| 225 | err = basic_set_parms(net, tp, fnew, base, tb, tca[TCA_RATE], ovr); | 226 | err = basic_set_parms(net, tp, fnew, base, tb, tca[TCA_RATE], ovr, |
| 227 | extack); | ||
| 226 | if (err < 0) { | 228 | if (err < 0) { |
| 227 | if (!fold) | 229 | if (!fold) |
| 228 | idr_remove_ext(&head->handle_idr, fnew->handle); | 230 | idr_remove_ext(&head->handle_idr, fnew->handle); |
diff --git a/net/sched/cls_bpf.c b/net/sched/cls_bpf.c index e51eb503a23a..c86072779b0a 100644 --- a/net/sched/cls_bpf.c +++ b/net/sched/cls_bpf.c | |||
| @@ -403,7 +403,8 @@ static int cls_bpf_prog_from_efd(struct nlattr **tb, struct cls_bpf_prog *prog, | |||
| 403 | 403 | ||
| 404 | static int cls_bpf_set_parms(struct net *net, struct tcf_proto *tp, | 404 | static int cls_bpf_set_parms(struct net *net, struct tcf_proto *tp, |
| 405 | struct cls_bpf_prog *prog, unsigned long base, | 405 | struct cls_bpf_prog *prog, unsigned long base, |
| 406 | struct nlattr **tb, struct nlattr *est, bool ovr) | 406 | struct nlattr **tb, struct nlattr *est, bool ovr, |
| 407 | struct netlink_ext_ack *extack) | ||
| 407 | { | 408 | { |
| 408 | bool is_bpf, is_ebpf, have_exts = false; | 409 | bool is_bpf, is_ebpf, have_exts = false; |
| 409 | u32 gen_flags = 0; | 410 | u32 gen_flags = 0; |
| @@ -414,7 +415,7 @@ static int cls_bpf_set_parms(struct net *net, struct tcf_proto *tp, | |||
| 414 | if ((!is_bpf && !is_ebpf) || (is_bpf && is_ebpf)) | 415 | if ((!is_bpf && !is_ebpf) || (is_bpf && is_ebpf)) |
| 415 | return -EINVAL; | 416 | return -EINVAL; |
| 416 | 417 | ||
| 417 | ret = tcf_exts_validate(net, tp, tb, est, &prog->exts, ovr); | 418 | ret = tcf_exts_validate(net, tp, tb, est, &prog->exts, ovr, extack); |
| 418 | if (ret < 0) | 419 | if (ret < 0) |
| 419 | return ret; | 420 | return ret; |
| 420 | 421 | ||
| @@ -500,7 +501,8 @@ static int cls_bpf_change(struct net *net, struct sk_buff *in_skb, | |||
| 500 | prog->handle = handle; | 501 | prog->handle = handle; |
| 501 | } | 502 | } |
| 502 | 503 | ||
| 503 | ret = cls_bpf_set_parms(net, tp, prog, base, tb, tca[TCA_RATE], ovr); | 504 | ret = cls_bpf_set_parms(net, tp, prog, base, tb, tca[TCA_RATE], ovr, |
| 505 | extack); | ||
| 504 | if (ret < 0) | 506 | if (ret < 0) |
| 505 | goto errout_idr; | 507 | goto errout_idr; |
| 506 | 508 | ||
diff --git a/net/sched/cls_cgroup.c b/net/sched/cls_cgroup.c index b74af0b55820..aaafcf6965f7 100644 --- a/net/sched/cls_cgroup.c +++ b/net/sched/cls_cgroup.c | |||
| @@ -122,7 +122,8 @@ static int cls_cgroup_change(struct net *net, struct sk_buff *in_skb, | |||
| 122 | if (err < 0) | 122 | if (err < 0) |
| 123 | goto errout; | 123 | goto errout; |
| 124 | 124 | ||
| 125 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &new->exts, ovr); | 125 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &new->exts, ovr, |
| 126 | extack); | ||
| 126 | if (err < 0) | 127 | if (err < 0) |
| 127 | goto errout; | 128 | goto errout; |
| 128 | 129 | ||
diff --git a/net/sched/cls_flow.c b/net/sched/cls_flow.c index faa0b6793a17..07816133cbb9 100644 --- a/net/sched/cls_flow.c +++ b/net/sched/cls_flow.c | |||
| @@ -454,7 +454,8 @@ static int flow_change(struct net *net, struct sk_buff *in_skb, | |||
| 454 | if (err < 0) | 454 | if (err < 0) |
| 455 | goto err2; | 455 | goto err2; |
| 456 | 456 | ||
| 457 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &fnew->exts, ovr); | 457 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &fnew->exts, ovr, |
| 458 | extack); | ||
| 458 | if (err < 0) | 459 | if (err < 0) |
| 459 | goto err2; | 460 | goto err2; |
| 460 | 461 | ||
diff --git a/net/sched/cls_flower.c b/net/sched/cls_flower.c index 7d92bbeeba54..8235ed9143c4 100644 --- a/net/sched/cls_flower.c +++ b/net/sched/cls_flower.c | |||
| @@ -827,11 +827,12 @@ static int fl_check_assign_mask(struct cls_fl_head *head, | |||
| 827 | static int fl_set_parms(struct net *net, struct tcf_proto *tp, | 827 | static int fl_set_parms(struct net *net, struct tcf_proto *tp, |
| 828 | struct cls_fl_filter *f, struct fl_flow_mask *mask, | 828 | struct cls_fl_filter *f, struct fl_flow_mask *mask, |
| 829 | unsigned long base, struct nlattr **tb, | 829 | unsigned long base, struct nlattr **tb, |
| 830 | struct nlattr *est, bool ovr) | 830 | struct nlattr *est, bool ovr, |
| 831 | struct netlink_ext_ack *extack) | ||
| 831 | { | 832 | { |
| 832 | int err; | 833 | int err; |
| 833 | 834 | ||
| 834 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr); | 835 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr, extack); |
| 835 | if (err < 0) | 836 | if (err < 0) |
| 836 | return err; | 837 | return err; |
| 837 | 838 | ||
| @@ -916,7 +917,8 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, | |||
| 916 | } | 917 | } |
| 917 | } | 918 | } |
| 918 | 919 | ||
| 919 | err = fl_set_parms(net, tp, fnew, &mask, base, tb, tca[TCA_RATE], ovr); | 920 | err = fl_set_parms(net, tp, fnew, &mask, base, tb, tca[TCA_RATE], ovr, |
| 921 | extack); | ||
| 920 | if (err) | 922 | if (err) |
| 921 | goto errout_idr; | 923 | goto errout_idr; |
| 922 | 924 | ||
diff --git a/net/sched/cls_fw.c b/net/sched/cls_fw.c index 72784491ce20..72a924a38753 100644 --- a/net/sched/cls_fw.c +++ b/net/sched/cls_fw.c | |||
| @@ -218,13 +218,15 @@ static const struct nla_policy fw_policy[TCA_FW_MAX + 1] = { | |||
| 218 | 218 | ||
| 219 | static int fw_set_parms(struct net *net, struct tcf_proto *tp, | 219 | static int fw_set_parms(struct net *net, struct tcf_proto *tp, |
| 220 | struct fw_filter *f, struct nlattr **tb, | 220 | struct fw_filter *f, struct nlattr **tb, |
| 221 | struct nlattr **tca, unsigned long base, bool ovr) | 221 | struct nlattr **tca, unsigned long base, bool ovr, |
| 222 | struct netlink_ext_ack *extack) | ||
| 222 | { | 223 | { |
| 223 | struct fw_head *head = rtnl_dereference(tp->root); | 224 | struct fw_head *head = rtnl_dereference(tp->root); |
| 224 | u32 mask; | 225 | u32 mask; |
| 225 | int err; | 226 | int err; |
| 226 | 227 | ||
| 227 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &f->exts, ovr); | 228 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &f->exts, ovr, |
| 229 | extack); | ||
| 228 | if (err < 0) | 230 | if (err < 0) |
| 229 | return err; | 231 | return err; |
| 230 | 232 | ||
| @@ -296,7 +298,7 @@ static int fw_change(struct net *net, struct sk_buff *in_skb, | |||
| 296 | return err; | 298 | return err; |
| 297 | } | 299 | } |
| 298 | 300 | ||
| 299 | err = fw_set_parms(net, tp, fnew, tb, tca, base, ovr); | 301 | err = fw_set_parms(net, tp, fnew, tb, tca, base, ovr, extack); |
| 300 | if (err < 0) { | 302 | if (err < 0) { |
| 301 | tcf_exts_destroy(&fnew->exts); | 303 | tcf_exts_destroy(&fnew->exts); |
| 302 | kfree(fnew); | 304 | kfree(fnew); |
| @@ -345,7 +347,7 @@ static int fw_change(struct net *net, struct sk_buff *in_skb, | |||
| 345 | f->id = handle; | 347 | f->id = handle; |
| 346 | f->tp = tp; | 348 | f->tp = tp; |
| 347 | 349 | ||
| 348 | err = fw_set_parms(net, tp, f, tb, tca, base, ovr); | 350 | err = fw_set_parms(net, tp, f, tb, tca, base, ovr, extack); |
| 349 | if (err < 0) | 351 | if (err < 0) |
| 350 | goto errout; | 352 | goto errout; |
| 351 | 353 | ||
diff --git a/net/sched/cls_matchall.c b/net/sched/cls_matchall.c index 689bd199aa14..9a0901ee6b74 100644 --- a/net/sched/cls_matchall.c +++ b/net/sched/cls_matchall.c | |||
| @@ -142,11 +142,12 @@ static const struct nla_policy mall_policy[TCA_MATCHALL_MAX + 1] = { | |||
| 142 | static int mall_set_parms(struct net *net, struct tcf_proto *tp, | 142 | static int mall_set_parms(struct net *net, struct tcf_proto *tp, |
| 143 | struct cls_mall_head *head, | 143 | struct cls_mall_head *head, |
| 144 | unsigned long base, struct nlattr **tb, | 144 | unsigned long base, struct nlattr **tb, |
| 145 | struct nlattr *est, bool ovr) | 145 | struct nlattr *est, bool ovr, |
| 146 | struct netlink_ext_ack *extack) | ||
| 146 | { | 147 | { |
| 147 | int err; | 148 | int err; |
| 148 | 149 | ||
| 149 | err = tcf_exts_validate(net, tp, tb, est, &head->exts, ovr); | 150 | err = tcf_exts_validate(net, tp, tb, est, &head->exts, ovr, extack); |
| 150 | if (err < 0) | 151 | if (err < 0) |
| 151 | return err; | 152 | return err; |
| 152 | 153 | ||
| @@ -198,7 +199,8 @@ static int mall_change(struct net *net, struct sk_buff *in_skb, | |||
| 198 | new->handle = handle; | 199 | new->handle = handle; |
| 199 | new->flags = flags; | 200 | new->flags = flags; |
| 200 | 201 | ||
| 201 | err = mall_set_parms(net, tp, new, base, tb, tca[TCA_RATE], ovr); | 202 | err = mall_set_parms(net, tp, new, base, tb, tca[TCA_RATE], ovr, |
| 203 | extack); | ||
| 202 | if (err) | 204 | if (err) |
| 203 | goto err_set_parms; | 205 | goto err_set_parms; |
| 204 | 206 | ||
diff --git a/net/sched/cls_route.c b/net/sched/cls_route.c index f436d4d894a9..92d683851cb0 100644 --- a/net/sched/cls_route.c +++ b/net/sched/cls_route.c | |||
| @@ -389,7 +389,7 @@ static int route4_set_parms(struct net *net, struct tcf_proto *tp, | |||
| 389 | unsigned long base, struct route4_filter *f, | 389 | unsigned long base, struct route4_filter *f, |
| 390 | u32 handle, struct route4_head *head, | 390 | u32 handle, struct route4_head *head, |
| 391 | struct nlattr **tb, struct nlattr *est, int new, | 391 | struct nlattr **tb, struct nlattr *est, int new, |
| 392 | bool ovr) | 392 | bool ovr, struct netlink_ext_ack *extack) |
| 393 | { | 393 | { |
| 394 | u32 id = 0, to = 0, nhandle = 0x8000; | 394 | u32 id = 0, to = 0, nhandle = 0x8000; |
| 395 | struct route4_filter *fp; | 395 | struct route4_filter *fp; |
| @@ -397,7 +397,7 @@ static int route4_set_parms(struct net *net, struct tcf_proto *tp, | |||
| 397 | struct route4_bucket *b; | 397 | struct route4_bucket *b; |
| 398 | int err; | 398 | int err; |
| 399 | 399 | ||
| 400 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr); | 400 | err = tcf_exts_validate(net, tp, tb, est, &f->exts, ovr, extack); |
| 401 | if (err < 0) | 401 | if (err < 0) |
| 402 | return err; | 402 | return err; |
| 403 | 403 | ||
| @@ -516,7 +516,7 @@ static int route4_change(struct net *net, struct sk_buff *in_skb, | |||
| 516 | } | 516 | } |
| 517 | 517 | ||
| 518 | err = route4_set_parms(net, tp, base, f, handle, head, tb, | 518 | err = route4_set_parms(net, tp, base, f, handle, head, tb, |
| 519 | tca[TCA_RATE], new, ovr); | 519 | tca[TCA_RATE], new, ovr, extack); |
| 520 | if (err < 0) | 520 | if (err < 0) |
| 521 | goto errout; | 521 | goto errout; |
| 522 | 522 | ||
diff --git a/net/sched/cls_rsvp.h b/net/sched/cls_rsvp.h index d1f67529c01d..c27d23694002 100644 --- a/net/sched/cls_rsvp.h +++ b/net/sched/cls_rsvp.h | |||
| @@ -511,7 +511,7 @@ static int rsvp_change(struct net *net, struct sk_buff *in_skb, | |||
| 511 | err = tcf_exts_init(&e, TCA_RSVP_ACT, TCA_RSVP_POLICE); | 511 | err = tcf_exts_init(&e, TCA_RSVP_ACT, TCA_RSVP_POLICE); |
| 512 | if (err < 0) | 512 | if (err < 0) |
| 513 | return err; | 513 | return err; |
| 514 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &e, ovr); | 514 | err = tcf_exts_validate(net, tp, tb, tca[TCA_RATE], &e, ovr, extack); |
| 515 | if (err < 0) | 515 | if (err < 0) |
| 516 | goto errout2; | 516 | goto errout2; |
| 517 | 517 | ||
diff --git a/net/sched/cls_tcindex.c b/net/sched/cls_tcindex.c index 0ec84cf2d6b7..9d6621caa92f 100644 --- a/net/sched/cls_tcindex.c +++ b/net/sched/cls_tcindex.c | |||
| @@ -322,7 +322,7 @@ static int | |||
| 322 | tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base, | 322 | tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base, |
| 323 | u32 handle, struct tcindex_data *p, | 323 | u32 handle, struct tcindex_data *p, |
| 324 | struct tcindex_filter_result *r, struct nlattr **tb, | 324 | struct tcindex_filter_result *r, struct nlattr **tb, |
| 325 | struct nlattr *est, bool ovr) | 325 | struct nlattr *est, bool ovr, struct netlink_ext_ack *extack) |
| 326 | { | 326 | { |
| 327 | struct tcindex_filter_result new_filter_result, *old_r = r; | 327 | struct tcindex_filter_result new_filter_result, *old_r = r; |
| 328 | struct tcindex_filter_result cr; | 328 | struct tcindex_filter_result cr; |
| @@ -334,7 +334,7 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base, | |||
| 334 | err = tcf_exts_init(&e, TCA_TCINDEX_ACT, TCA_TCINDEX_POLICE); | 334 | err = tcf_exts_init(&e, TCA_TCINDEX_ACT, TCA_TCINDEX_POLICE); |
| 335 | if (err < 0) | 335 | if (err < 0) |
| 336 | return err; | 336 | return err; |
| 337 | err = tcf_exts_validate(net, tp, tb, est, &e, ovr); | 337 | err = tcf_exts_validate(net, tp, tb, est, &e, ovr, extack); |
| 338 | if (err < 0) | 338 | if (err < 0) |
| 339 | goto errout; | 339 | goto errout; |
| 340 | 340 | ||
| @@ -541,7 +541,7 @@ tcindex_change(struct net *net, struct sk_buff *in_skb, | |||
| 541 | return err; | 541 | return err; |
| 542 | 542 | ||
| 543 | return tcindex_set_parms(net, tp, base, handle, p, r, tb, | 543 | return tcindex_set_parms(net, tp, base, handle, p, r, tb, |
| 544 | tca[TCA_RATE], ovr); | 544 | tca[TCA_RATE], ovr, extack); |
| 545 | } | 545 | } |
| 546 | 546 | ||
| 547 | static void tcindex_walk(struct tcf_proto *tp, struct tcf_walker *walker) | 547 | static void tcindex_walk(struct tcf_proto *tp, struct tcf_walker *walker) |
diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index d9cadebc7eaa..933058bbd0a9 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c | |||
| @@ -765,11 +765,12 @@ static const struct nla_policy u32_policy[TCA_U32_MAX + 1] = { | |||
| 765 | static int u32_set_parms(struct net *net, struct tcf_proto *tp, | 765 | static int u32_set_parms(struct net *net, struct tcf_proto *tp, |
| 766 | unsigned long base, struct tc_u_hnode *ht, | 766 | unsigned long base, struct tc_u_hnode *ht, |
| 767 | struct tc_u_knode *n, struct nlattr **tb, | 767 | struct tc_u_knode *n, struct nlattr **tb, |
| 768 | struct nlattr *est, bool ovr) | 768 | struct nlattr *est, bool ovr, |
| 769 | struct netlink_ext_ack *extack) | ||
| 769 | { | 770 | { |
| 770 | int err; | 771 | int err; |
| 771 | 772 | ||
| 772 | err = tcf_exts_validate(net, tp, tb, est, &n->exts, ovr); | 773 | err = tcf_exts_validate(net, tp, tb, est, &n->exts, ovr, extack); |
| 773 | if (err < 0) | 774 | if (err < 0) |
| 774 | return err; | 775 | return err; |
| 775 | 776 | ||
| @@ -937,7 +938,7 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, | |||
| 937 | 938 | ||
| 938 | err = u32_set_parms(net, tp, base, | 939 | err = u32_set_parms(net, tp, base, |
| 939 | rtnl_dereference(n->ht_up), new, tb, | 940 | rtnl_dereference(n->ht_up), new, tb, |
| 940 | tca[TCA_RATE], ovr); | 941 | tca[TCA_RATE], ovr, extack); |
| 941 | 942 | ||
| 942 | if (err) { | 943 | if (err) { |
| 943 | u32_destroy_key(tp, new, false); | 944 | u32_destroy_key(tp, new, false); |
| @@ -1084,7 +1085,8 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, | |||
| 1084 | } | 1085 | } |
| 1085 | #endif | 1086 | #endif |
| 1086 | 1087 | ||
| 1087 | err = u32_set_parms(net, tp, base, ht, n, tb, tca[TCA_RATE], ovr); | 1088 | err = u32_set_parms(net, tp, base, ht, n, tb, tca[TCA_RATE], ovr, |
| 1089 | extack); | ||
| 1088 | if (err == 0) { | 1090 | if (err == 0) { |
| 1089 | struct tc_u_knode __rcu **ins; | 1091 | struct tc_u_knode __rcu **ins; |
| 1090 | struct tc_u_knode *pins; | 1092 | struct tc_u_knode *pins; |
