From patchwork Mon Feb 12 20:19:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Aring X-Patchwork-Id: 872373 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=mojatatu-com.20150623.gappssmtp.com header.i=@mojatatu-com.20150623.gappssmtp.com header.b="00gvPXBL"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zgH8p3ZHGz9t32 for ; Tue, 13 Feb 2018 07:20:10 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753446AbeBLUTp (ORCPT ); Mon, 12 Feb 2018 15:19:45 -0500 Received: from mail-it0-f65.google.com ([209.85.214.65]:51298 "EHLO mail-it0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753220AbeBLUTm (ORCPT ); Mon, 12 Feb 2018 15:19:42 -0500 Received: by mail-it0-f65.google.com with SMTP id 193so5388523iti.1 for ; Mon, 12 Feb 2018 12:19:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mojatatu-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=RvT+1IeszKDEewE0QlULCuqyIKN7XjCNYCZKFkT02bY=; b=00gvPXBL8FtIYdUHZqajxwDHgT/TZ1DLtjhfMppNmesy3mM2AM049eYATZXlpd0ltH O1at8AQciPqqD2OLbKlA1P5ZoSCkv6lLeGi0t7lGiBgJU8pxV68eGW8B/Cax5YmzDF8N UMWHHRM+mqOHvNTHiMltvHavDPPkkUEQCr4uLy5IrY/bodx9zJQuADsrmKm/UOIVLfue +HnL8oI5zoG5B9w5VoN7dJqZMhQYcsHzdGWiitPfqpHKt2ykVAoFPeKf10VaFmRG7G0k q7AmtHAiE3CkE9qO+jLRAxSQCJD+ooJc7gS0R2USHHpHNgM374OgAFpwvNzE0KsTv5OE 3b0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=RvT+1IeszKDEewE0QlULCuqyIKN7XjCNYCZKFkT02bY=; b=ni4w1b7+uNsHFgSXNLtmCOk180dIAbKH0+PvdDUMvrLv/MLRf0TCotXQPZ+JXfzpcv QZXcHncva0xWBpZZC7IppUKoHqy2bxss9YxklZavN8Knm2xyAT/EJed3nKxgERZulp3Y oB9PdD3HYPwpiji3UIfNqzcc3W4lPRxCz35QOowrwNgIc5oUHTZC6BvoGkpAefc88PWh iYkbsRZZ5UnaaYxnYsfjHH/bAIriQDIqzHSsRiIsPUeN6QVTYw4WgUSo8FfpbnrxOhNP rSn4YZZEsRABN5hd76LLYAWY6vqoh9KsCbZeWNwATgK+0a6AAHuX0mphczW+DEdEhpZ6 K8xQ== X-Gm-Message-State: APf1xPDg08I08pC35NQFXjZggMkFV/aOXmyczN0jzWIrqkdtYw+R7vQ7 faNoh1DvjeVVNBbGukjvQTEMEA== X-Google-Smtp-Source: AH8x224bgesbmJilsQwy+OR9okul/Pg+r2vJiDiJkYvISKj/JsXczuzqRwHDBiBDfAQWZeTCB3cBqQ== X-Received: by 10.36.94.210 with SMTP id h201mr7019100itb.40.1518466781325; Mon, 12 Feb 2018 12:19:41 -0800 (PST) Received: from x220t.lan ([64.26.149.125]) by smtp.gmail.com with ESMTPSA id s8sm8213236itb.39.2018.02.12.12.19.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Feb 2018 12:19:40 -0800 (PST) From: Alexander Aring To: davem@davemloft.net Cc: jhs@mojatatu.com, xiyou.wangcong@gmail.com, jiri@resnulli.us, netdev@vger.kernel.org, Alexander Aring , David Ahern Subject: [PATCH net-next 2/8] net: sched: act: add extack to init Date: Mon, 12 Feb 2018 15:19:05 -0500 Message-Id: <20180212201911.18704-3-aring@mojatatu.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180212201911.18704-1-aring@mojatatu.com> References: <20180212201911.18704-1-aring@mojatatu.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This patch adds extack to tcf_action_init and tcf_action_init_1 functions. These are necessary to make individual extack handling in each act implementation. Based on work by David Ahern Cc: David Ahern Signed-off-by: Alexander Aring --- include/net/act_api.h | 5 +++-- net/sched/act_api.c | 17 +++++++++++------ net/sched/cls_api.c | 4 ++-- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/include/net/act_api.h b/include/net/act_api.h index 32ef544f4ddc..41d95930ffbc 100644 --- a/include/net/act_api.h +++ b/include/net/act_api.h @@ -163,10 +163,11 @@ int tcf_action_exec(struct sk_buff *skb, struct tc_action **actions, int nr_actions, struct tcf_result *res); int tcf_action_init(struct net *net, struct tcf_proto *tp, struct nlattr *nla, struct nlattr *est, char *name, int ovr, int bind, - struct list_head *actions); + struct list_head *actions, struct netlink_ext_ack *extack); struct tc_action *tcf_action_init_1(struct net *net, struct tcf_proto *tp, struct nlattr *nla, struct nlattr *est, - char *name, int ovr, int bind); + char *name, int ovr, int bind, + struct netlink_ext_ack *extack); int tcf_action_dump(struct sk_buff *skb, struct list_head *, int, int); int tcf_action_dump_old(struct sk_buff *skb, struct tc_action *a, int, int); int tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int, int); diff --git a/net/sched/act_api.c b/net/sched/act_api.c index d885b3127e53..db7500d613fc 100644 --- a/net/sched/act_api.c +++ b/net/sched/act_api.c @@ -605,7 +605,8 @@ static struct tc_cookie *nla_memdup_cookie(struct nlattr **tb) struct tc_action *tcf_action_init_1(struct net *net, struct tcf_proto *tp, struct nlattr *nla, struct nlattr *est, - char *name, int ovr, int bind) + char *name, int ovr, int bind, + struct netlink_ext_ack *extack) { struct tc_action *a; struct tc_action_ops *a_o; @@ -726,7 +727,7 @@ static void cleanup_a(struct list_head *actions, int ovr) int tcf_action_init(struct net *net, struct tcf_proto *tp, struct nlattr *nla, struct nlattr *est, char *name, int ovr, int bind, - struct list_head *actions) + struct list_head *actions, struct netlink_ext_ack *extack) { struct nlattr *tb[TCA_ACT_MAX_PRIO + 1]; struct tc_action *act; @@ -738,7 +739,8 @@ int tcf_action_init(struct net *net, struct tcf_proto *tp, struct nlattr *nla, return err; for (i = 1; i <= TCA_ACT_MAX_PRIO && tb[i]; i++) { - act = tcf_action_init_1(net, tp, tb[i], est, name, ovr, bind); + act = tcf_action_init_1(net, tp, tb[i], est, name, ovr, bind, + extack); if (IS_ERR(act)) { err = PTR_ERR(act); goto err; @@ -1060,12 +1062,14 @@ tcf_add_notify(struct net *net, struct nlmsghdr *n, struct list_head *actions, } static int tcf_action_add(struct net *net, struct nlattr *nla, - struct nlmsghdr *n, u32 portid, int ovr) + struct nlmsghdr *n, u32 portid, int ovr, + struct netlink_ext_ack *extack) { int ret = 0; LIST_HEAD(actions); - ret = tcf_action_init(net, NULL, nla, NULL, NULL, ovr, 0, &actions); + ret = tcf_action_init(net, NULL, nla, NULL, NULL, ovr, 0, &actions, + extack); if (ret) return ret; @@ -1113,7 +1117,8 @@ static int tc_ctl_action(struct sk_buff *skb, struct nlmsghdr *n, if (n->nlmsg_flags & NLM_F_REPLACE) ovr = 1; replay: - ret = tcf_action_add(net, tca[TCA_ACT_TAB], n, portid, ovr); + ret = tcf_action_add(net, tca[TCA_ACT_TAB], n, portid, ovr, + extack); if (ret == -EAGAIN) goto replay; break; diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 2bc1bc23d42e..f21610c5da1a 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c @@ -1434,7 +1434,7 @@ int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb, if (exts->police && tb[exts->police]) { act = tcf_action_init_1(net, tp, tb[exts->police], rate_tlv, "police", ovr, - TCA_ACT_BIND); + TCA_ACT_BIND, extack); if (IS_ERR(act)) return PTR_ERR(act); @@ -1447,7 +1447,7 @@ int tcf_exts_validate(struct net *net, struct tcf_proto *tp, struct nlattr **tb, err = tcf_action_init(net, tp, tb[exts->action], rate_tlv, NULL, ovr, TCA_ACT_BIND, - &actions); + &actions, extack); if (err) return err; list_for_each_entry(act, &actions, list)