]> git.itanic.dy.fi Git - linux-stable/commitdiff
net/sched: act_api: add specific EXT_WARN_MSG for tc action
authorHangbin Liu <liuhangbin@gmail.com>
Thu, 16 Mar 2023 03:37:53 +0000 (11:37 +0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 17 Mar 2023 04:25:45 +0000 (21:25 -0700)
In my previous commit 0349b8779cc9 ("sched: add new attr TCA_EXT_WARN_MSG
to report tc extact message") I didn't notice the tc action use different
enum with filter. So we can't use TCA_EXT_WARN_MSG directly for tc action.
Let's add a TCA_ROOT_EXT_WARN_MSG for tc action specifically and put this
param before going to the TCA_ACT_TAB nest.

Fixes: 0349b8779cc9 ("sched: add new attr TCA_EXT_WARN_MSG to report tc extact message")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/uapi/linux/rtnetlink.h
net/sched/act_api.c

index 25a0af57dd5ed3c204897f8da892a4c378bf5c08..51c13cf9c5aee4a2d1ab33c1a89043383d67b9cf 100644 (file)
@@ -789,6 +789,7 @@ enum {
        TCA_ROOT_FLAGS,
        TCA_ROOT_COUNT,
        TCA_ROOT_TIME_DELTA, /* in msecs */
+       TCA_ROOT_EXT_WARN_MSG,
        __TCA_ROOT_MAX,
 #define        TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
 };
index fce5228860990c80b3c1af306dfcb4ad871505b2..296fc1afedd82bdaed2e08aa12a03180a1ff7184 100644 (file)
@@ -1589,6 +1589,10 @@ static int tca_get_fill(struct sk_buff *skb, struct tc_action *actions[],
        t->tca__pad1 = 0;
        t->tca__pad2 = 0;
 
+       if (extack && extack->_msg &&
+           nla_put_string(skb, TCA_ROOT_EXT_WARN_MSG, extack->_msg))
+               goto out_nlmsg_trim;
+
        nest = nla_nest_start_noflag(skb, TCA_ACT_TAB);
        if (!nest)
                goto out_nlmsg_trim;
@@ -1598,10 +1602,6 @@ static int tca_get_fill(struct sk_buff *skb, struct tc_action *actions[],
 
        nla_nest_end(skb, nest);
 
-       if (extack && extack->_msg &&
-           nla_put_string(skb, TCA_EXT_WARN_MSG, extack->_msg))
-               goto out_nlmsg_trim;
-
        nlh->nlmsg_len = skb_tail_pointer(skb) - b;
 
        return skb->len;