Commit e457d86a authored by Jiri Pirko's avatar Jiri Pirko Committed by David S. Miller
Browse files

net: sched: add couple of goto_chain helpers



Add helpers to find out if a gact instance is goto_chain termination
action and to get chain index.

Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 45b62742
Loading
Loading
Loading
Loading
+16 −4
Original line number Original line Diff line number Diff line
@@ -15,7 +15,8 @@ struct tcf_gact {
};
};
#define to_gact(a) ((struct tcf_gact *)a)
#define to_gact(a) ((struct tcf_gact *)a)


static inline bool __is_tcf_gact_act(const struct tc_action *a, int act)
static inline bool __is_tcf_gact_act(const struct tc_action *a, int act,
				     bool is_ext)
{
{
#ifdef CONFIG_NET_CLS_ACT
#ifdef CONFIG_NET_CLS_ACT
	struct tcf_gact *gact;
	struct tcf_gact *gact;
@@ -24,7 +25,8 @@ static inline bool __is_tcf_gact_act(const struct tc_action *a, int act)
		return false;
		return false;


	gact = to_gact(a);
	gact = to_gact(a);
	if (gact->tcf_action == act)
	if ((!is_ext && gact->tcf_action == act) ||
	    (is_ext && TC_ACT_EXT_CMP(gact->tcf_action, act)))
		return true;
		return true;


#endif
#endif
@@ -33,12 +35,22 @@ static inline bool __is_tcf_gact_act(const struct tc_action *a, int act)


static inline bool is_tcf_gact_shot(const struct tc_action *a)
static inline bool is_tcf_gact_shot(const struct tc_action *a)
{
{
	return __is_tcf_gact_act(a, TC_ACT_SHOT);
	return __is_tcf_gact_act(a, TC_ACT_SHOT, false);
}
}


static inline bool is_tcf_gact_trap(const struct tc_action *a)
static inline bool is_tcf_gact_trap(const struct tc_action *a)
{
{
	return __is_tcf_gact_act(a, TC_ACT_TRAP);
	return __is_tcf_gact_act(a, TC_ACT_TRAP, false);
}

static inline bool is_tcf_gact_goto_chain(const struct tc_action *a)
{
	return __is_tcf_gact_act(a, TC_ACT_GOTO_CHAIN, true);
}

static inline u32 tcf_gact_goto_chain_index(const struct tc_action *a)
{
	return a->goto_chain->index;
}
}


#endif /* __NET_TC_GACT_H */
#endif /* __NET_TC_GACT_H */