diff options
author | Quentin Monnet <quentin.monnet@netronome.com> | 2018-01-19 20:44:45 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-01-22 16:28:23 -0500 |
commit | 10a47e0f0930149664dbc44169edc1fef09c4257 (patch) | |
tree | 5f1898570c543415b648e3577d758f10a8fc52b9 | |
parent | 0279814055a0800aacacd18331bdc4ac4f3d2241 (diff) |
net: sched: cls_u32: propagate extack support for filter offload
Propagate the extack pointer from the `->change()` classifier operation
to the function used for filter replacement in cls_u32. This makes it
possible to use netlink extack messages in the future at replacement
time for this filter, although it is not used at this point.
Signed-off-by: Quentin Monnet <quentin.monnet@netronome.com>
Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/sched/cls_u32.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index 57113e936155..0206c210e25b 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c | |||
@@ -501,7 +501,7 @@ static void u32_clear_hw_hnode(struct tcf_proto *tp, struct tc_u_hnode *h) | |||
501 | } | 501 | } |
502 | 502 | ||
503 | static int u32_replace_hw_hnode(struct tcf_proto *tp, struct tc_u_hnode *h, | 503 | static int u32_replace_hw_hnode(struct tcf_proto *tp, struct tc_u_hnode *h, |
504 | u32 flags) | 504 | u32 flags, struct netlink_ext_ack *extack) |
505 | { | 505 | { |
506 | struct tcf_block *block = tp->chain->block; | 506 | struct tcf_block *block = tp->chain->block; |
507 | struct tc_cls_u32_offload cls_u32 = {}; | 507 | struct tc_cls_u32_offload cls_u32 = {}; |
@@ -543,7 +543,7 @@ static void u32_remove_hw_knode(struct tcf_proto *tp, struct tc_u_knode *n) | |||
543 | } | 543 | } |
544 | 544 | ||
545 | static int u32_replace_hw_knode(struct tcf_proto *tp, struct tc_u_knode *n, | 545 | static int u32_replace_hw_knode(struct tcf_proto *tp, struct tc_u_knode *n, |
546 | u32 flags) | 546 | u32 flags, struct netlink_ext_ack *extack) |
547 | { | 547 | { |
548 | struct tcf_block *block = tp->chain->block; | 548 | struct tcf_block *block = tp->chain->block; |
549 | struct tc_cls_u32_offload cls_u32 = {}; | 549 | struct tc_cls_u32_offload cls_u32 = {}; |
@@ -965,7 +965,7 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, | |||
965 | return err; | 965 | return err; |
966 | } | 966 | } |
967 | 967 | ||
968 | err = u32_replace_hw_knode(tp, new, flags); | 968 | err = u32_replace_hw_knode(tp, new, flags, extack); |
969 | if (err) { | 969 | if (err) { |
970 | u32_destroy_key(tp, new, false); | 970 | u32_destroy_key(tp, new, false); |
971 | return err; | 971 | return err; |
@@ -1016,7 +1016,7 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, | |||
1016 | ht->prio = tp->prio; | 1016 | ht->prio = tp->prio; |
1017 | idr_init(&ht->handle_idr); | 1017 | idr_init(&ht->handle_idr); |
1018 | 1018 | ||
1019 | err = u32_replace_hw_hnode(tp, ht, flags); | 1019 | err = u32_replace_hw_hnode(tp, ht, flags, extack); |
1020 | if (err) { | 1020 | if (err) { |
1021 | idr_remove_ext(&tp_c->handle_idr, handle); | 1021 | idr_remove_ext(&tp_c->handle_idr, handle); |
1022 | kfree(ht); | 1022 | kfree(ht); |
@@ -1122,7 +1122,7 @@ static int u32_change(struct net *net, struct sk_buff *in_skb, | |||
1122 | struct tc_u_knode __rcu **ins; | 1122 | struct tc_u_knode __rcu **ins; |
1123 | struct tc_u_knode *pins; | 1123 | struct tc_u_knode *pins; |
1124 | 1124 | ||
1125 | err = u32_replace_hw_knode(tp, n, flags); | 1125 | err = u32_replace_hw_knode(tp, n, flags, extack); |
1126 | if (err) | 1126 | if (err) |
1127 | goto errhw; | 1127 | goto errhw; |
1128 | 1128 | ||