flow_action
ib_spec->action.act = uobj_get_obj_read(flow_action,
static int sja1105_policer_validate(const struct flow_action *action,
const struct flow_action *actions = &f->rule->action;
struct flow_action *flow_action,
if (!flow_action_has_entries(flow_action)) {
if (!flow_action_basic_hw_stats_check(flow_action, extack))
flow_action_for_each(i, act, flow_action) {
struct flow_action *actions,
struct flow_action *actions,
struct flow_action *actions,
struct flow_action *actions,
static int cxgb4_policer_validate(const struct flow_action *action,
struct flow_action *actions = &cls->rule->action;
static int enetc_psfp_policer_validate(const struct flow_action *action,
struct flow_action *action = &rule->action;
struct flow_action *flow_action = &rule->action;
if (!flow_action_has_entries(flow_action))
flow_action_for_each(i, act, flow_action) {
struct flow_action *actions = &cls->rule->action;
struct flow_action *actions,
static int otx2_policer_validate(const struct flow_action *action,
struct flow_action *actions = &cls->rule->action;
struct flow_action *flow_action,
if (!flow_action_has_entries(flow_action)) {
flow_action_for_each(i, act, flow_action) {
err = otx2_policer_validate(flow_action, act, extack);
struct flow_action *flow_action,
if (!flow_action_has_entries(flow_action))
if (!flow_action_mixed_hw_stats_check(flow_action, extack))
act = flow_action_first_entry_get(flow_action);
flow_action_for_each(i, act, flow_action) {
struct flow_action *flow_action,
parse_state->flow_action = flow_action;
struct flow_action *flow_action, int from, int to,
flow_action_for_each(i, act, flow_action) {
struct flow_action *flow_action,
struct flow_action *flow_action, int from, int to,
struct flow_action *flow_action;
flow_action_is_last_entry(parse_state->flow_action, act));
struct flow_action *flow_action = &rule->action;
flow_action_for_each(i, act, flow_action) {
struct flow_action *flow_action = &flow_rule->action;
flow_action_for_each(i, act, flow_action) {
struct flow_action *flow_action = &flow_rule->action;
flow_action_for_each(i, act, flow_action) {
struct flow_action *flow_action = &rule->action;
flow_action_for_each(i, act, flow_action) {
is_flow_action_modify_ip_header(struct flow_action *flow_action)
flow_action_for_each(i, act, flow_action) {
struct flow_action *flow_action,
modify_ip_header = is_flow_action_modify_ip_header(flow_action);
struct flow_action *flow_action,
!modify_header_match_supported(priv, &parse_attr->spec, flow_action, actions,
struct flow_action *flow_action)
flow_action_for_each(i, act, flow_action) {
i < flow_action->num_entries - 1)) {
err = mlx5e_tc_act_post_parse(parse_state, flow_action, i_split, i, attr,
err = mlx5e_tc_act_post_parse(parse_state, flow_action, i_split, i, attr, ns_type);
flow_action_supported(struct flow_action *flow_action,
if (!flow_action_has_entries(flow_action)) {
if (!flow_action_hw_stats_check(flow_action, extack,
struct flow_action *flow_action,
err = flow_action_supported(flow_action, extack);
mlx5e_tc_act_init_parse_state(parse_state, flow, flow_action, extack);
err = parse_tc_actions(parse_state, flow_action);
if (!actions_match_supported(priv, flow_action, parse_state->actions,
struct flow_action *flow_action,
err = flow_action_supported(flow_action, extack);
mlx5e_tc_act_init_parse_state(parse_state, flow, flow_action, extack);
err = parse_tc_actions(parse_state, flow_action);
if (!actions_match_supported(priv, flow_action, parse_state->actions,
tc_matchall_police_validate(const struct flow_action *action,
struct flow_action *flow_action,
if (!flow_action_has_entries(flow_action)) {
if (!flow_offload_has_one_action(flow_action)) {
if (!flow_action_basic_hw_stats_check(flow_action, extack)) {
flow_action_for_each(i, act, flow_action) {
err = tc_matchall_police_validate(flow_action, act, extack);
u16 vlan_id, u32 flow_action)
flow_act.action = flow_action;
u16 vlan_id, u32 flow_action);
struct ibv_flow_action *flow_action;
static int mlxsw_sp_policer_validate(const struct flow_action *action,
err = mlxsw_sp_policer_validate(flow_action, act, extack);
struct flow_action *flow_action,
if (!flow_action_has_entries(flow_action))
if (!flow_action_mixed_hw_stats_check(flow_action, extack))
act = flow_action_first_entry_get(flow_action);
flow_action_for_each(i, act, flow_action) {
struct flow_action *action,
struct flow_action *action,
const struct flow_action *action,
struct flow_action *act = &rule->action;
struct flow_action *act = &rule->action;
const struct flow_action *action = &f->rule->action;
struct flow_action *action = &f->rule->action;
int ocelot_policer_validate(const struct flow_action *action,
int ocelot_policer_validate(const struct flow_action *action,
static bool nfp_fl_check_mangle_start(struct flow_action *flow_act,
static bool nfp_fl_check_mangle_end(struct flow_action *flow_act,
struct flow_action *flow_action =
flow_action_for_each(i, act, flow_action) {
static int nfp_policer_validate(const struct flow_action *action,
struct flow_action *flow_action,
if (!flow_action_has_entries(flow_action)) {
if (!flow_action_basic_hw_stats_check(flow_action, extack))
flow_action_for_each(i, act, flow_action) {
struct flow_action *flow_action,
err = qede_parse_actions(edev, flow_action, extack);
struct flow_action *action,
static int am65_cpsw_qos_clsflower_policer_validate(const struct flow_action *action,
static int cpsw_qos_clsflower_policer_validate(const struct flow_action *action,
static inline bool flow_action_has_entries(const struct flow_action *action)
static inline bool flow_offload_has_one_action(const struct flow_action *action)
static inline bool flow_action_is_last_entry(const struct flow_action *action,
flow_action_mixed_hw_stats_check(const struct flow_action *action,
flow_action_first_entry_get(const struct flow_action *action)
__flow_action_hw_stats_check(const struct flow_action *action,
flow_action_hw_stats_check(const struct flow_action *action,
flow_action_basic_hw_stats_check(const struct flow_action *action,
struct flow_action action;
struct flow_action action;
int tc_setup_offload_action(struct flow_action *flow_action,
void tc_cleanup_offload_action(struct flow_action *flow_action);
int tc_setup_action(struct flow_action *flow_action,
const struct flow_action *action = &cls->rule->action;
struct flow_action *action)
tcf_ct_add_ipv6_addr_mangle_action(struct flow_action *action,
struct flow_action *action)
struct flow_action *action)
struct flow_action *action)
struct flow_action *action)
struct flow_action *action)
struct flow_action *action = &flow_rule->rule->action;
tcf_ct_flow_table_flow_action_get_next(struct flow_action *flow_action)
int i = flow_action->num_entries++;
return &flow_action->entries[i];
static void tcf_ct_add_mangle_action(struct flow_action *action,
void tc_cleanup_offload_action(struct flow_action *flow_action)
flow_action_for_each(i, entry, flow_action) {
int tc_setup_action(struct flow_action *flow_action,
entry = &flow_action->entries[j];
tc_cleanup_offload_action(flow_action);
int tc_setup_offload_action(struct flow_action *flow_action,
return tc_setup_action(flow_action, exts->actions, miss_cookie_base,