DPDK
25.11.0
Toggle main menu visibility
Loading...
Searching...
No Matches
rte_swx_pipeline_spec.h
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright(c) 2022 Intel Corporation
3
*/
4
#ifndef __INCLUDE_RTE_SWX_PIPELINE_SPEC_H__
5
#define __INCLUDE_RTE_SWX_PIPELINE_SPEC_H__
6
7
#include <stdint.h>
8
#include <stdio.h>
9
10
#include <
rte_common.h
>
11
12
#include <
rte_swx_pipeline.h
>
13
14
#ifdef __cplusplus
15
extern
"C"
{
16
#endif
17
18
/*
19
* extobj.
20
*
21
* extobj OBJ_NAME instanceof OBJ_TYPE [ pragma OBJ_CREATE_ARGS ]
22
*/
23
struct
extobj_spec {
24
char
*name;
25
char
*extern_type_name;
26
char
*pragma;
27
};
28
29
/*
30
* struct.
31
*
32
* struct STRUCT_TYPE_NAME {
33
* bit<SIZE> | varbit<SIZE> FIELD_NAME
34
* ...
35
* }
36
*/
37
struct
struct_spec {
38
char
*name;
39
struct
rte_swx_field_params *fields;
40
uint32_t n_fields;
41
int
varbit;
42
};
43
44
/*
45
* header.
46
*
47
* header HEADER_NAME instanceof STRUCT_TYPE_NAME
48
*/
49
struct
header_spec {
50
char
*name;
51
char
*struct_type_name;
52
};
53
54
/*
55
* metadata.
56
*
57
* metadata instanceof STRUCT_TYPE_NAME
58
*/
59
struct
metadata_spec {
60
char
*struct_type_name;
61
};
62
63
/*
64
* action.
65
*
66
* action ACTION_NAME args none | instanceof STRUCT_TYPE_NAME {
67
* INSTRUCTION
68
* ...
69
* }
70
*/
71
struct
action_spec {
72
char
*name;
73
char
*args_struct_type_name;
74
const
char
**instructions;
75
uint32_t n_instructions;
76
};
77
78
/*
79
* table.
80
*
81
* table TABLE_NAME {
82
* key {
83
* MATCH_FIELD_NAME exact | wildcard | lpm
84
* ...
85
* }
86
* actions {
87
* ACTION_NAME [ @tableonly | @defaultonly ]
88
* ...
89
* }
90
* default_action ACTION_NAME args none | ARG0_NAME ARG0_VALUE ... [ const ]
91
* hash HASH_FUNCTION_NAME
92
* instanceof TABLE_TYPE_NAME
93
* pragma ARGS
94
* size SIZE
95
* }
96
*/
97
struct
table_spec {
98
char
*name;
99
struct
rte_swx_pipeline_table_params params;
100
char
*recommended_table_type_name;
101
char
*args;
102
uint32_t size;
103
};
104
105
/*
106
* selector.
107
*
108
* selector SELECTOR_NAME {
109
* group_id FIELD_NAME
110
* selector {
111
* FIELD_NAME
112
* ...
113
* }
114
* member_id FIELD_NAME
115
* n_groups N_GROUPS
116
* n_members_per_group N_MEMBERS_PER_GROUP
117
* }
118
*/
119
struct
selector_spec {
120
char
*name;
121
struct
rte_swx_pipeline_selector_params params;
122
};
123
124
/*
125
* learner.
126
*
127
* learner LEARNER_NAME {
128
* key {
129
* MATCH_FIELD_NAME
130
* ...
131
* }
132
* actions {
133
* ACTION_NAME [ @tableonly | @defaultonly]
134
* ...
135
* }
136
* default_action ACTION_NAME args none | ARG0_NAME ARG0_VALUE ... [ const ]
137
* hash HASH_FUNCTION_NAME
138
* size SIZE
139
* timeout {
140
* TIMEOUT_IN_SECONDS
141
* ...
142
* }
143
* }
144
*/
145
struct
learner_spec {
146
char
*name;
147
struct
rte_swx_pipeline_learner_params params;
148
uint32_t size;
149
uint32_t *timeout;
150
uint32_t n_timeouts;
151
};
152
153
/*
154
* regarray.
155
*
156
* regarray NAME size SIZE initval INITVAL
157
*/
158
struct
regarray_spec {
159
char
*name;
160
uint64_t init_val;
161
uint32_t size;
162
};
163
164
/*
165
* metarray.
166
*
167
* metarray NAME size SIZE
168
*/
169
struct
metarray_spec {
170
char
*name;
171
uint32_t size;
172
};
173
174
/*
175
* rss.
176
*
177
* rss NAME
178
*/
179
struct
rss_spec {
180
char
*name;
181
};
182
183
/*
184
* apply.
185
*
186
* apply {
187
* INSTRUCTION
188
* ...
189
* }
190
*/
191
struct
apply_spec {
192
const
char
**instructions;
193
uint32_t n_instructions;
194
};
195
196
/*
197
* Pipeline.
198
*/
199
struct
pipeline_spec {
200
struct
extobj_spec *extobjs;
201
struct
struct_spec *structs;
202
struct
header_spec *headers;
203
struct
metadata_spec *metadata;
204
struct
action_spec *actions;
205
struct
table_spec *tables;
206
struct
selector_spec *selectors;
207
struct
learner_spec *learners;
208
struct
regarray_spec *regarrays;
209
struct
metarray_spec *metarrays;
210
struct
rss_spec *rss;
211
struct
apply_spec *apply;
212
213
uint32_t n_extobjs;
214
uint32_t n_structs;
215
uint32_t n_headers;
216
uint32_t n_metadata;
217
uint32_t n_actions;
218
uint32_t n_tables;
219
uint32_t n_selectors;
220
uint32_t n_learners;
221
uint32_t n_regarrays;
222
uint32_t n_metarrays;
223
uint32_t n_rss;
224
uint32_t n_apply;
225
};
226
227
/*
228
* Mirroring:
229
* mirroring slots <n_slots> sessions <n_sessions>
230
*
231
* Input ports:
232
* port in <port_id> ethdev <ethdev_name> rxq <queue_id> bsz <burst_size>
233
* port in <port_id> ring <ring_name> bsz <burst_size>
234
* port in <port_id> source mempool <mempool_name> file <file_name> loop <n_loops>
235
* packets <n_pkts_max>
236
* port in <port_id> fd <file_descriptor> mtu <mtu> mempool <mempool_name> bsz <burst_size>
237
*
238
* Output ports:
239
* port out <port_id> ethdev <ethdev_name> txq <queue_id> bsz <burst_size>
240
* port out <port_id> ring <ring_name> bsz <burst_size>
241
* port out <port_id> sink file <file_name> | none
242
* port out <port_id> fd <file_descriptor> bsz <burst_size>
243
*/
244
struct
pipeline_iospec {
245
struct
rte_swx_pipeline_mirroring_params mirroring_params;
246
247
uint32_t *port_in_id;
248
const
char
**port_in_type;
249
void
**port_in_params;
250
251
uint32_t *port_out_id;
252
const
char
**port_out_type;
253
void
**port_out_params;
254
255
uint32_t n_ports_in;
256
uint32_t n_ports_out;
257
};
258
259
void
260
pipeline_spec_free(
struct
pipeline_spec *s);
261
262
void
263
pipeline_spec_codegen(FILE *f,
264
struct
pipeline_spec *s);
265
266
struct
pipeline_spec *
267
pipeline_spec_parse(FILE *spec,
268
uint32_t *err_line,
269
const
char
**err_msg);
270
271
int
272
pipeline_spec_configure(
struct
rte_swx_pipeline *p,
273
struct
pipeline_spec *s,
274
const
char
**err_msg);
275
276
void
277
pipeline_iospec_free(
struct
pipeline_iospec *s);
278
279
struct
pipeline_iospec *
280
pipeline_iospec_parse(FILE *spec,
281
uint32_t *err_line,
282
const
char
**err_msg);
283
284
int
285
pipeline_iospec_configure(
struct
rte_swx_pipeline *p,
286
struct
pipeline_iospec *s,
287
const
char
**err_msg);
288
289
#ifdef __cplusplus
290
}
291
#endif
292
293
#endif
rte_common.h
rte_swx_pipeline.h
lib
pipeline
rte_swx_pipeline_spec.h
Generated by
1.17.0