From patchwork Tue Mar 8 10:42:31 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amir Vadai X-Patchwork-Id: 593999 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id E0814140273 for ; Tue, 8 Mar 2016 21:39:28 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932932AbcCHKj0 (ORCPT ); Tue, 8 Mar 2016 05:39:26 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:34552 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932930AbcCHKjQ (ORCPT ); Tue, 8 Mar 2016 05:39:16 -0500 Received: by mail-wm0-f65.google.com with SMTP id p65so3237724wmp.1 for ; Tue, 08 Mar 2016 02:39:15 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=fv5dJUdq3Q729QNC5Vhv3UHKfhqMj6/XxH0V8xZnUBU=; b=fEnIWSHDy08Krj+bM6eRPuedW55Ut3xZZuITNiCDUAyJnanpgNZecJ6NmKTi+mMRF0 1XOV8XwM0GFzekNLq6c6AlONt+OiCSvov/sysKayVM7Fw77jcVMrSN3L3S39xdzniZyS g7LUjqg40gniSlgBSw1WkYIoPOusnk3EAICe1134FTtQ8OzPLlsOrtvohAc/u2ZQqYYP lzItIWx1zn5qAxCxaDWp352sbq6GEmqlJRNXmd777/5xZx2aQfGbBvqyK+OU8xmnF/Bq 3yfbmDJXugpg5ZKon1V2RYPYsIlImSliBg0Xvr/hKh6rVPEZXskNHYNFMtTQAExVnYAR 1RTw== X-Gm-Message-State: AD7BkJKyrrbvOJUlOmWY7fUUItMjlckAbxnQh3pDxXhIiShhN+XqbKNqGEFlnZEmlhNORw== X-Received: by 10.194.22.97 with SMTP id c1mr28269624wjf.19.1457433554285; Tue, 08 Mar 2016 02:39:14 -0800 (PST) Received: from office.mtl.com? (212.116.172.4.static.012.net.il. [212.116.172.4]) by smtp.gmail.com with ESMTPSA id n66sm2706344wmg.20.2016.03.08.02.39.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 08 Mar 2016 02:39:13 -0800 (PST) From: Amir Vadai To: "David S. Miller" Cc: netdev@vger.kernel.org, John Fastabend , Jiri Pirko , Or Gerlitz , Saeed Mahameed , Hadar Har-Zion , Rony Efraim , Amir Vadai Subject: [PATCH net-next V3 03/10] net/sched: Macro instead of CONFIG_NET_CLS_ACT ifdef Date: Tue, 8 Mar 2016 12:42:31 +0200 Message-Id: <1457433758-9193-4-git-send-email-amir@vadai.me> X-Mailer: git-send-email 2.7.0 In-Reply-To: <1457433758-9193-1-git-send-email-amir@vadai.me> References: <1457433758-9193-1-git-send-email-amir@vadai.me> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Introduce the macros tc_no_actions and tc_for_each_action to make code clearer. Extracted struct tc_action out of the ifdef to make calls to is_tcf_gact_shot() and similar functions valid, even when it is a nop. Acked-by: Jiri Pirko Acked-by: John Fastabend Suggested-by: Jiri Pirko Signed-off-by: Amir Vadai --- include/net/act_api.h | 21 ++++++++++++++++----- include/net/tc_act/tc_gact.h | 4 ++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/include/net/act_api.h b/include/net/act_api.h index 342be6c..2a19fe1 100644 --- a/include/net/act_api.h +++ b/include/net/act_api.h @@ -78,11 +78,6 @@ static inline void tcf_lastuse_update(struct tcf_t *tm) tm->lastuse = now; } -#ifdef CONFIG_NET_CLS_ACT - -#define ACT_P_CREATED 1 -#define ACT_P_DELETED 1 - struct tc_action { void *priv; const struct tc_action_ops *ops; @@ -92,6 +87,11 @@ struct tc_action { struct tcf_hashinfo *hinfo; }; +#ifdef CONFIG_NET_CLS_ACT + +#define ACT_P_CREATED 1 +#define ACT_P_DELETED 1 + struct tc_action_ops { struct list_head head; char kind[IFNAMSIZ]; @@ -171,5 +171,16 @@ 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); int tcf_action_copy_stats(struct sk_buff *, struct tc_action *, int); + +#define tc_no_actions(_exts) \ + (list_empty(&(_exts)->actions)) + +#define tc_for_each_action(_a, _exts) \ + list_for_each_entry(a, &(_exts)->actions, list) +#else /* CONFIG_NET_CLS_ACT */ + +#define tc_no_actions(_exts) true +#define tc_for_each_action(_a, _exts) while (0) + #endif /* CONFIG_NET_CLS_ACT */ #endif diff --git a/include/net/tc_act/tc_gact.h b/include/net/tc_act/tc_gact.h index 04a3183..93c520b 100644 --- a/include/net/tc_act/tc_gact.h +++ b/include/net/tc_act/tc_gact.h @@ -16,9 +16,9 @@ struct tcf_gact { #define to_gact(a) \ container_of(a->priv, struct tcf_gact, common) -#ifdef CONFIG_NET_CLS_ACT static inline bool is_tcf_gact_shot(const struct tc_action *a) { +#ifdef CONFIG_NET_CLS_ACT struct tcf_gact *gact; if (a->ops && a->ops->type != TCA_ACT_GACT) @@ -28,7 +28,7 @@ static inline bool is_tcf_gact_shot(const struct tc_action *a) if (gact->tcf_action == TC_ACT_SHOT) return true; +#endif return false; } -#endif #endif /* __NET_TC_GACT_H */