.. | .. |
---|
36 | 36 | #include "fs_core.h" |
---|
37 | 37 | |
---|
38 | 38 | struct 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, |
---|
| 39 | + int (*create_flow_table)(struct mlx5_flow_root_namespace *ns, |
---|
| 40 | + struct mlx5_flow_table *ft, |
---|
| 41 | + unsigned int log_size, |
---|
| 42 | + struct mlx5_flow_table *next_ft); |
---|
| 43 | + int (*destroy_flow_table)(struct mlx5_flow_root_namespace *ns, |
---|
47 | 44 | struct mlx5_flow_table *ft); |
---|
48 | 45 | |
---|
49 | | - int (*modify_flow_table)(struct mlx5_core_dev *dev, |
---|
| 46 | + int (*modify_flow_table)(struct mlx5_flow_root_namespace *ns, |
---|
50 | 47 | struct mlx5_flow_table *ft, |
---|
51 | 48 | struct mlx5_flow_table *next_ft); |
---|
52 | 49 | |
---|
53 | | - int (*create_flow_group)(struct mlx5_core_dev *dev, |
---|
| 50 | + int (*create_flow_group)(struct mlx5_flow_root_namespace *ns, |
---|
54 | 51 | struct mlx5_flow_table *ft, |
---|
55 | 52 | u32 *in, |
---|
56 | | - unsigned int *group_id); |
---|
| 53 | + struct mlx5_flow_group *fg); |
---|
57 | 54 | |
---|
58 | | - int (*destroy_flow_group)(struct mlx5_core_dev *dev, |
---|
| 55 | + int (*destroy_flow_group)(struct mlx5_flow_root_namespace *ns, |
---|
59 | 56 | struct mlx5_flow_table *ft, |
---|
60 | | - unsigned int group_id); |
---|
| 57 | + struct mlx5_flow_group *fg); |
---|
61 | 58 | |
---|
62 | | - int (*create_fte)(struct mlx5_core_dev *dev, |
---|
| 59 | + int (*create_fte)(struct mlx5_flow_root_namespace *ns, |
---|
63 | 60 | struct mlx5_flow_table *ft, |
---|
64 | 61 | struct mlx5_flow_group *fg, |
---|
65 | 62 | struct fs_fte *fte); |
---|
66 | 63 | |
---|
67 | | - int (*update_fte)(struct mlx5_core_dev *dev, |
---|
| 64 | + int (*update_fte)(struct mlx5_flow_root_namespace *ns, |
---|
68 | 65 | struct mlx5_flow_table *ft, |
---|
69 | | - unsigned int group_id, |
---|
| 66 | + struct mlx5_flow_group *fg, |
---|
70 | 67 | int modify_mask, |
---|
71 | 68 | struct fs_fte *fte); |
---|
72 | 69 | |
---|
73 | | - int (*delete_fte)(struct mlx5_core_dev *dev, |
---|
| 70 | + int (*delete_fte)(struct mlx5_flow_root_namespace *ns, |
---|
74 | 71 | struct mlx5_flow_table *ft, |
---|
75 | 72 | struct fs_fte *fte); |
---|
76 | 73 | |
---|
77 | | - int (*update_root_ft)(struct mlx5_core_dev *dev, |
---|
| 74 | + int (*update_root_ft)(struct mlx5_flow_root_namespace *ns, |
---|
78 | 75 | struct mlx5_flow_table *ft, |
---|
79 | 76 | u32 underlay_qpn, |
---|
80 | 77 | bool disconnect); |
---|
| 78 | + |
---|
| 79 | + int (*packet_reformat_alloc)(struct mlx5_flow_root_namespace *ns, |
---|
| 80 | + int reformat_type, |
---|
| 81 | + size_t size, |
---|
| 82 | + void *reformat_data, |
---|
| 83 | + enum mlx5_flow_namespace_type namespace, |
---|
| 84 | + struct mlx5_pkt_reformat *pkt_reformat); |
---|
| 85 | + |
---|
| 86 | + void (*packet_reformat_dealloc)(struct mlx5_flow_root_namespace *ns, |
---|
| 87 | + struct mlx5_pkt_reformat *pkt_reformat); |
---|
| 88 | + |
---|
| 89 | + int (*modify_header_alloc)(struct mlx5_flow_root_namespace *ns, |
---|
| 90 | + u8 namespace, u8 num_actions, |
---|
| 91 | + void *modify_actions, |
---|
| 92 | + struct mlx5_modify_hdr *modify_hdr); |
---|
| 93 | + |
---|
| 94 | + void (*modify_header_dealloc)(struct mlx5_flow_root_namespace *ns, |
---|
| 95 | + struct mlx5_modify_hdr *modify_hdr); |
---|
| 96 | + |
---|
| 97 | + int (*set_peer)(struct mlx5_flow_root_namespace *ns, |
---|
| 98 | + struct mlx5_flow_root_namespace *peer_ns); |
---|
| 99 | + |
---|
| 100 | + int (*create_ns)(struct mlx5_flow_root_namespace *ns); |
---|
| 101 | + int (*destroy_ns)(struct mlx5_flow_root_namespace *ns); |
---|
81 | 102 | }; |
---|
82 | 103 | |
---|
83 | 104 | int mlx5_cmd_fc_alloc(struct mlx5_core_dev *dev, u32 *id); |
---|
| 105 | +int mlx5_cmd_fc_bulk_alloc(struct mlx5_core_dev *dev, |
---|
| 106 | + enum mlx5_fc_bulk_alloc_bitmask alloc_bitmask, |
---|
| 107 | + u32 *id); |
---|
84 | 108 | int mlx5_cmd_fc_free(struct mlx5_core_dev *dev, u32 id); |
---|
85 | 109 | int mlx5_cmd_fc_query(struct mlx5_core_dev *dev, u32 id, |
---|
86 | 110 | u64 *packets, u64 *bytes); |
---|
87 | 111 | |
---|
88 | | -struct mlx5_cmd_fc_bulk; |
---|
89 | | - |
---|
90 | | -struct mlx5_cmd_fc_bulk * |
---|
91 | | -mlx5_cmd_fc_bulk_alloc(struct mlx5_core_dev *dev, u32 id, int num); |
---|
92 | | -void mlx5_cmd_fc_bulk_free(struct mlx5_cmd_fc_bulk *b); |
---|
93 | | -int |
---|
94 | | -mlx5_cmd_fc_bulk_query(struct mlx5_core_dev *dev, struct mlx5_cmd_fc_bulk *b); |
---|
95 | | -void mlx5_cmd_fc_bulk_get(struct mlx5_core_dev *dev, |
---|
96 | | - struct mlx5_cmd_fc_bulk *b, u32 id, |
---|
97 | | - u64 *packets, u64 *bytes); |
---|
| 112 | +int mlx5_cmd_fc_get_bulk_query_out_len(int bulk_len); |
---|
| 113 | +int mlx5_cmd_fc_bulk_query(struct mlx5_core_dev *dev, u32 base_id, int bulk_len, |
---|
| 114 | + u32 *out); |
---|
98 | 115 | |
---|
99 | 116 | const struct mlx5_flow_cmds *mlx5_fs_cmd_get_default(enum fs_flow_table_type type); |
---|
| 117 | +const struct mlx5_flow_cmds *mlx5_fs_cmd_get_fw_cmds(void); |
---|
100 | 118 | |
---|
101 | 119 | #endif |
---|