aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/tc_act
diff options
context:
space:
mode:
authorWANG Cong <xiyou.wangcong@gmail.com>2016-07-25 19:09:41 -0400
committerDavid S. Miller <davem@davemloft.net>2016-07-26 00:49:19 -0400
commita85a970af265f156740977168b542234511b28a8 (patch)
tree19866c37883917b1ec6964fcbae76335f9de0139 /include/net/tc_act
parentb93dd49c1a35884864027abd707889b795637f7a (diff)
net_sched: move tc_action into tcf_common
struct tc_action is confusing, currently we use it for two purposes: 1) Pass in arguments and carry out results from helper functions 2) A generic representation for tc actions The first one is error-prone, since we need to make sure we don't miss anything. This patch aims to get rid of this use, by moving tc_action into tcf_common, so that they are allocated together in hashtable and can be cast'ed easily. And together with the following patch, we could really make tc_action a generic representation for all tc actions and each type of action can inherit from it. Cc: Jamal Hadi Salim <jhs@mojatatu.com> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/tc_act')
-rw-r--r--include/net/tc_act/tc_bpf.h3
-rw-r--r--include/net/tc_act/tc_connmark.h3
-rw-r--r--include/net/tc_act/tc_csum.h3
-rw-r--r--include/net/tc_act/tc_defact.h3
-rw-r--r--include/net/tc_act/tc_gact.h5
-rw-r--r--include/net/tc_act/tc_ife.h3
-rw-r--r--include/net/tc_act/tc_ipt.h3
-rw-r--r--include/net/tc_act/tc_mirred.h3
-rw-r--r--include/net/tc_act/tc_nat.h5
-rw-r--r--include/net/tc_act/tc_pedit.h3
-rw-r--r--include/net/tc_act/tc_skbedit.h3
-rw-r--r--include/net/tc_act/tc_vlan.h3
12 files changed, 13 insertions, 27 deletions
diff --git a/include/net/tc_act/tc_bpf.h b/include/net/tc_act/tc_bpf.h
index 958d69cfb19c..80a4d6f49773 100644
--- a/include/net/tc_act/tc_bpf.h
+++ b/include/net/tc_act/tc_bpf.h
@@ -23,7 +23,6 @@ struct tcf_bpf {
23 struct sock_filter *bpf_ops; 23 struct sock_filter *bpf_ops;
24 const char *bpf_name; 24 const char *bpf_name;
25}; 25};
26#define to_bpf(a) \ 26#define to_bpf(a) ((struct tcf_bpf *)a)
27 container_of(a->priv, struct tcf_bpf, common)
28 27
29#endif /* __NET_TC_BPF_H */ 28#endif /* __NET_TC_BPF_H */
diff --git a/include/net/tc_act/tc_connmark.h b/include/net/tc_act/tc_connmark.h
index 02caa406611b..8a661135f4ac 100644
--- a/include/net/tc_act/tc_connmark.h
+++ b/include/net/tc_act/tc_connmark.h
@@ -9,7 +9,6 @@ struct tcf_connmark_info {
9 u16 zone; 9 u16 zone;
10}; 10};
11 11
12#define to_connmark(a) \ 12#define to_connmark(a) ((struct tcf_connmark_info *)a)
13 container_of(a->priv, struct tcf_connmark_info, common)
14 13
15#endif /* __NET_TC_CONNMARK_H */ 14#endif /* __NET_TC_CONNMARK_H */
diff --git a/include/net/tc_act/tc_csum.h b/include/net/tc_act/tc_csum.h
index fa8f5fac65e9..1a9ef15d573b 100644
--- a/include/net/tc_act/tc_csum.h
+++ b/include/net/tc_act/tc_csum.h
@@ -9,7 +9,6 @@ struct tcf_csum {
9 9
10 u32 update_flags; 10 u32 update_flags;
11}; 11};
12#define to_tcf_csum(a) \ 12#define to_tcf_csum(a) ((struct tcf_csum *)a)
13 container_of(a->priv,struct tcf_csum,common)
14 13
15#endif /* __NET_TC_CSUM_H */ 14#endif /* __NET_TC_CSUM_H */
diff --git a/include/net/tc_act/tc_defact.h b/include/net/tc_act/tc_defact.h
index ab9b5d6be67b..e25b4eb4fc66 100644
--- a/include/net/tc_act/tc_defact.h
+++ b/include/net/tc_act/tc_defact.h
@@ -8,7 +8,6 @@ struct tcf_defact {
8 u32 tcfd_datalen; 8 u32 tcfd_datalen;
9 void *tcfd_defdata; 9 void *tcfd_defdata;
10}; 10};
11#define to_defact(a) \ 11#define to_defact(a) ((struct tcf_defact *)a)
12 container_of(a->priv, struct tcf_defact, common)
13 12
14#endif /* __NET_TC_DEF_H */ 13#endif /* __NET_TC_DEF_H */
diff --git a/include/net/tc_act/tc_gact.h b/include/net/tc_act/tc_gact.h
index 93c520b83d10..119cdb418c23 100644
--- a/include/net/tc_act/tc_gact.h
+++ b/include/net/tc_act/tc_gact.h
@@ -13,8 +13,7 @@ struct tcf_gact {
13 atomic_t packets; 13 atomic_t packets;
14#endif 14#endif
15}; 15};
16#define to_gact(a) \ 16#define to_gact(a) ((struct tcf_gact *)a)
17 container_of(a->priv, struct tcf_gact, common)
18 17
19static inline bool is_tcf_gact_shot(const struct tc_action *a) 18static inline bool is_tcf_gact_shot(const struct tc_action *a)
20{ 19{
@@ -24,7 +23,7 @@ static inline bool is_tcf_gact_shot(const struct tc_action *a)
24 if (a->ops && a->ops->type != TCA_ACT_GACT) 23 if (a->ops && a->ops->type != TCA_ACT_GACT)
25 return false; 24 return false;
26 25
27 gact = a->priv; 26 gact = to_gact(a);
28 if (gact->tcf_action == TC_ACT_SHOT) 27 if (gact->tcf_action == TC_ACT_SHOT)
29 return true; 28 return true;
30 29
diff --git a/include/net/tc_act/tc_ife.h b/include/net/tc_act/tc_ife.h
index c55facd17b7e..7921abe42adc 100644
--- a/include/net/tc_act/tc_ife.h
+++ b/include/net/tc_act/tc_ife.h
@@ -16,8 +16,7 @@ struct tcf_ife_info {
16 /* list of metaids allowed */ 16 /* list of metaids allowed */
17 struct list_head metalist; 17 struct list_head metalist;
18}; 18};
19#define to_ife(a) \ 19#define to_ife(a) ((struct tcf_ife_info *)a)
20 container_of(a->priv, struct tcf_ife_info, common)
21 20
22struct tcf_meta_info { 21struct tcf_meta_info {
23 const struct tcf_meta_ops *ops; 22 const struct tcf_meta_ops *ops;
diff --git a/include/net/tc_act/tc_ipt.h b/include/net/tc_act/tc_ipt.h
index c0f4193f432c..c22ae7ab66ed 100644
--- a/include/net/tc_act/tc_ipt.h
+++ b/include/net/tc_act/tc_ipt.h
@@ -11,7 +11,6 @@ struct tcf_ipt {
11 char *tcfi_tname; 11 char *tcfi_tname;
12 struct xt_entry_target *tcfi_t; 12 struct xt_entry_target *tcfi_t;
13}; 13};
14#define to_ipt(a) \ 14#define to_ipt(a) ((struct tcf_ipt *)a)
15 container_of(a->priv, struct tcf_ipt, common)
16 15
17#endif /* __NET_TC_IPT_H */ 16#endif /* __NET_TC_IPT_H */
diff --git a/include/net/tc_act/tc_mirred.h b/include/net/tc_act/tc_mirred.h
index 6a13a7c74e0c..89aebd22cd79 100644
--- a/include/net/tc_act/tc_mirred.h
+++ b/include/net/tc_act/tc_mirred.h
@@ -12,8 +12,7 @@ struct tcf_mirred {
12 struct net_device __rcu *tcfm_dev; 12 struct net_device __rcu *tcfm_dev;
13 struct list_head tcfm_list; 13 struct list_head tcfm_list;
14}; 14};
15#define to_mirred(a) \ 15#define to_mirred(a) ((struct tcf_mirred *)a)
16 container_of(a->priv, struct tcf_mirred, common)
17 16
18static inline bool is_tcf_mirred_redirect(const struct tc_action *a) 17static inline bool is_tcf_mirred_redirect(const struct tc_action *a)
19{ 18{
diff --git a/include/net/tc_act/tc_nat.h b/include/net/tc_act/tc_nat.h
index 63d8e9ca9d99..a91ad3ad565e 100644
--- a/include/net/tc_act/tc_nat.h
+++ b/include/net/tc_act/tc_nat.h
@@ -13,9 +13,6 @@ struct tcf_nat {
13 u32 flags; 13 u32 flags;
14}; 14};
15 15
16static inline struct tcf_nat *to_tcf_nat(struct tc_action *a) 16#define to_tcf_nat(a) ((struct tcf_nat *)a)
17{
18 return container_of(a->priv, struct tcf_nat, common);
19}
20 17
21#endif /* __NET_TC_NAT_H */ 18#endif /* __NET_TC_NAT_H */
diff --git a/include/net/tc_act/tc_pedit.h b/include/net/tc_act/tc_pedit.h
index 5b80998879c7..2cccfbaae800 100644
--- a/include/net/tc_act/tc_pedit.h
+++ b/include/net/tc_act/tc_pedit.h
@@ -9,7 +9,6 @@ struct tcf_pedit {
9 unsigned char tcfp_flags; 9 unsigned char tcfp_flags;
10 struct tc_pedit_key *tcfp_keys; 10 struct tc_pedit_key *tcfp_keys;
11}; 11};
12#define to_pedit(a) \ 12#define to_pedit(a) ((struct tcf_pedit *)a)
13 container_of(a->priv, struct tcf_pedit, common)
14 13
15#endif /* __NET_TC_PED_H */ 14#endif /* __NET_TC_PED_H */
diff --git a/include/net/tc_act/tc_skbedit.h b/include/net/tc_act/tc_skbedit.h
index d01a5d40cfb5..9e0548998327 100644
--- a/include/net/tc_act/tc_skbedit.h
+++ b/include/net/tc_act/tc_skbedit.h
@@ -30,8 +30,7 @@ struct tcf_skbedit {
30 u16 queue_mapping; 30 u16 queue_mapping;
31 u16 ptype; 31 u16 ptype;
32}; 32};
33#define to_skbedit(a) \ 33#define to_skbedit(a) ((struct tcf_skbedit *)a)
34 container_of(a->priv, struct tcf_skbedit, common)
35 34
36/* Return true iff action is mark */ 35/* Return true iff action is mark */
37static inline bool is_tcf_skbedit_mark(const struct tc_action *a) 36static inline bool is_tcf_skbedit_mark(const struct tc_action *a)
diff --git a/include/net/tc_act/tc_vlan.h b/include/net/tc_act/tc_vlan.h
index 93b70ade1ff3..584b80788d52 100644
--- a/include/net/tc_act/tc_vlan.h
+++ b/include/net/tc_act/tc_vlan.h
@@ -21,7 +21,6 @@ struct tcf_vlan {
21 u16 tcfv_push_vid; 21 u16 tcfv_push_vid;
22 __be16 tcfv_push_proto; 22 __be16 tcfv_push_proto;
23}; 23};
24#define to_vlan(a) \ 24#define to_vlan(a) ((struct tcf_vlan *)a)
25 container_of(a->priv, struct tcf_vlan, common)
26 25
27#endif /* __NET_TC_VLAN_H */ 26#endif /* __NET_TC_VLAN_H */