1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33#ifndef _MLX5_FS_CMD_
34#define _MLX5_FS_CMD_
35
36#include "fs_core.h"
37
38struct mlx5_flow_cmds {
39 int (*create_flow_table)(struct mlx5_core_dev *dev,
40 u16 vport,
41 enum fs_flow_table_op_mod op_mod,
42 enum fs_flow_table_type type,
43 unsigned int level, unsigned int log_size,
44 struct mlx5_flow_table *next_ft,
45 unsigned int *table_id, u32 flags);
46 int (*destroy_flow_table)(struct mlx5_core_dev *dev,
47 struct mlx5_flow_table *ft);
48
49 int (*modify_flow_table)(struct mlx5_core_dev *dev,
50 struct mlx5_flow_table *ft,
51 struct mlx5_flow_table *next_ft);
52
53 int (*create_flow_group)(struct mlx5_core_dev *dev,
54 struct mlx5_flow_table *ft,
55 u32 *in,
56 unsigned int *group_id);
57
58 int (*destroy_flow_group)(struct mlx5_core_dev *dev,
59 struct mlx5_flow_table *ft,
60 unsigned int group_id);
61
62 int (*create_fte)(struct mlx5_core_dev *dev,
63 struct mlx5_flow_table *ft,
64 struct mlx5_flow_group *fg,
65 struct fs_fte *fte);
66
67 int (*update_fte)(struct mlx5_core_dev *dev,
68 struct mlx5_flow_table *ft,
69 unsigned int group_id,
70 int modify_mask,
71 struct fs_fte *fte);
72
73 int (*delete_fte)(struct mlx5_core_dev *dev,
74 struct mlx5_flow_table *ft,
75 struct fs_fte *fte);
76
77 int (*update_root_ft)(struct mlx5_core_dev *dev,
78 struct mlx5_flow_table *ft,
79 u32 underlay_qpn,
80 bool disconnect);
81};
82
83int mlx5_cmd_fc_alloc(struct mlx5_core_dev *dev, u32 *id);
84int mlx5_cmd_fc_free(struct mlx5_core_dev *dev, u32 id);
85int mlx5_cmd_fc_query(struct mlx5_core_dev *dev, u32 id,
86 u64 *packets, u64 *bytes);
87
88struct mlx5_cmd_fc_bulk;
89
90struct mlx5_cmd_fc_bulk *
91mlx5_cmd_fc_bulk_alloc(struct mlx5_core_dev *dev, u32 id, int num);
92void mlx5_cmd_fc_bulk_free(struct mlx5_cmd_fc_bulk *b);
93int
94mlx5_cmd_fc_bulk_query(struct mlx5_core_dev *dev, struct mlx5_cmd_fc_bulk *b);
95void mlx5_cmd_fc_bulk_get(struct mlx5_core_dev *dev,
96 struct mlx5_cmd_fc_bulk *b, u32 id,
97 u64 *packets, u64 *bytes);
98
99const struct mlx5_flow_cmds *mlx5_fs_cmd_get_default(enum fs_flow_table_type type);
100
101#endif
102