net/mlx5e: TC, set control params for branching actions
Extend the act tc api to set the branch control params aligning with the police conform/exceed use case. Signed-off-by: Oz Shlomo <ozsh@nvidia.com> Reviewed-by: Roi Dayan <roid@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Link: https://lore.kernel.org/r/20221203221337.29267-7-saeed@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Родитель
6442638251
Коммит
ec5878552b
|
@ -32,6 +32,11 @@ struct mlx5e_tc_act_parse_state {
|
|||
struct mlx5_tc_ct_priv *ct_priv;
|
||||
};
|
||||
|
||||
struct mlx5e_tc_act_branch_ctrl {
|
||||
enum flow_action_id act_id;
|
||||
u32 extval;
|
||||
};
|
||||
|
||||
struct mlx5e_tc_act {
|
||||
bool (*can_offload)(struct mlx5e_tc_act_parse_state *parse_state,
|
||||
const struct flow_action_entry *act,
|
||||
|
@ -61,6 +66,10 @@ struct mlx5e_tc_act {
|
|||
int (*stats_action)(struct mlx5e_priv *priv,
|
||||
struct flow_offload_action *fl_act);
|
||||
|
||||
bool (*get_branch_ctrl)(const struct flow_action_entry *act,
|
||||
struct mlx5e_tc_act_branch_ctrl *cond_true,
|
||||
struct mlx5e_tc_act_branch_ctrl *cond_false);
|
||||
|
||||
bool is_terminating_action;
|
||||
};
|
||||
|
||||
|
|
|
@ -147,6 +147,19 @@ tc_act_police_stats(struct mlx5e_priv *priv,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static bool
|
||||
tc_act_police_get_branch_ctrl(const struct flow_action_entry *act,
|
||||
struct mlx5e_tc_act_branch_ctrl *cond_true,
|
||||
struct mlx5e_tc_act_branch_ctrl *cond_false)
|
||||
{
|
||||
cond_true->act_id = act->police.notexceed.act_id;
|
||||
cond_true->extval = act->police.notexceed.extval;
|
||||
|
||||
cond_false->act_id = act->police.exceed.act_id;
|
||||
cond_false->extval = act->police.exceed.extval;
|
||||
return true;
|
||||
}
|
||||
|
||||
struct mlx5e_tc_act mlx5e_tc_act_police = {
|
||||
.can_offload = tc_act_can_offload_police,
|
||||
.parse_action = tc_act_parse_police,
|
||||
|
@ -154,4 +167,5 @@ struct mlx5e_tc_act mlx5e_tc_act_police = {
|
|||
.offload_action = tc_act_police_offload,
|
||||
.destroy_action = tc_act_police_destroy,
|
||||
.stats_action = tc_act_police_stats,
|
||||
.get_branch_ctrl = tc_act_police_get_branch_ctrl,
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче