mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-07 00:50:50 +00:00
mlx5: Add a no-append flow insertion mode
This allows to insert a rule and make sure it doesn't get combined by the steering layer with any other rule. Signed-off-by: Mark Bloch <mbloch@nvidia.com> Sponsored by: NVidia networking MFC after: 1 week
This commit is contained in:
parent
0a5db6bb3a
commit
6a6af22b6e
|
@ -96,8 +96,13 @@ enum mlx5_flow_act_actions {
|
|||
MLX5_FLOW_ACT_ACTIONS_PACKET_REFORMAT = 1 << 2,
|
||||
};
|
||||
|
||||
enum MLX5_FLOW_ACT_FLAGS {
|
||||
MLX5_FLOW_ACT_NO_APPEND = 1 << 0,
|
||||
};
|
||||
|
||||
struct mlx5_flow_act {
|
||||
u32 actions; /* See enum mlx5_flow_act_actions */
|
||||
u32 flags;
|
||||
u32 flow_tag;
|
||||
struct mlx5_modify_hdr *modify_hdr;
|
||||
struct mlx5_pkt_reformat *pkt_reformat;
|
||||
|
|
|
@ -1806,6 +1806,9 @@ static struct mlx5_flow_rule *fs_add_dst_fg(struct mlx5_flow_group *fg,
|
|||
char fte_name[20];
|
||||
|
||||
mutex_lock(&fg->base.lock);
|
||||
if (flow_act->flags & MLX5_FLOW_ACT_NO_APPEND)
|
||||
goto insert_fte;
|
||||
|
||||
fs_for_each_fte(fte, fg) {
|
||||
/* TODO: Check of size against PRM max size */
|
||||
mutex_lock(&fte->base.lock);
|
||||
|
@ -1821,6 +1824,7 @@ static struct mlx5_flow_rule *fs_add_dst_fg(struct mlx5_flow_group *fg,
|
|||
mutex_unlock(&fte->base.lock);
|
||||
}
|
||||
|
||||
insert_fte:
|
||||
fs_get_parent(ft, fg);
|
||||
if (fg->num_ftes == fg->max_ftes) {
|
||||
dst = ERR_PTR(-ENOSPC);
|
||||
|
|
Loading…
Reference in a new issue