Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause
2 : : * Copyright(C) 2021 Marvell.
3 : : */
4 : :
5 : : #include <inttypes.h>
6 : : #include <math.h>
7 : :
8 : : #include "cnxk_ethdev.h"
9 : :
10 : : struct sdp_channel {
11 : : bool is_sdp_mask_set;
12 : : uint16_t channel;
13 : : uint16_t mask;
14 : : };
15 : :
16 : : struct flow_pre_l2_size_info {
17 : : uint8_t pre_l2_size_off;
18 : : uint8_t pre_l2_size_off_mask;
19 : : uint8_t pre_l2_size_shift_dir;
20 : : };
21 : :
22 : : static int
23 : 0 : parse_outb_nb_desc(const char *key, const char *value, void *extra_args)
24 : : {
25 : : RTE_SET_USED(key);
26 : : uint32_t val;
27 : :
28 : : val = atoi(value);
29 : :
30 : 0 : *(uint16_t *)extra_args = val;
31 : :
32 : 0 : return 0;
33 : : }
34 : :
35 : : static int
36 : 0 : parse_outb_nb_crypto_qs(const char *key, const char *value, void *extra_args)
37 : : {
38 : : RTE_SET_USED(key);
39 : : uint32_t val;
40 : :
41 : 0 : val = atoi(value);
42 : :
43 [ # # ]: 0 : if (val < 1 || val > 64)
44 : : return -EINVAL;
45 : :
46 : 0 : *(uint16_t *)extra_args = val;
47 : :
48 : 0 : return 0;
49 : : }
50 : :
51 : : static int
52 : 0 : parse_ipsec_in_spi_range(const char *key, const char *value, void *extra_args)
53 : : {
54 : : RTE_SET_USED(key);
55 : : uint32_t val;
56 : :
57 : 0 : errno = 0;
58 : 0 : val = strtoul(value, NULL, 0);
59 [ # # ]: 0 : if (errno)
60 : : val = 0;
61 : :
62 : 0 : *(uint32_t *)extra_args = val;
63 : :
64 : 0 : return 0;
65 : : }
66 : :
67 : : static int
68 : 0 : parse_rxc_step(const char *key, const char *value, void *extra_args)
69 : : {
70 : : RTE_SET_USED(key);
71 : : uint32_t val;
72 : :
73 : 0 : errno = 0;
74 : 0 : val = strtoul(value, NULL, 0);
75 [ # # ]: 0 : if (errno)
76 : : return -EINVAL;
77 : :
78 [ # # ]: 0 : if (val > ROC_NIX_INL_REAS_STEP_MAX)
79 : : return -EINVAL;
80 : :
81 : 0 : *(uint32_t *)extra_args = val;
82 : :
83 : 0 : return 0;
84 : : }
85 : :
86 : : static int
87 : 0 : parse_ipsec_out_max_sa(const char *key, const char *value, void *extra_args)
88 : : {
89 : : RTE_SET_USED(key);
90 : : uint32_t val;
91 : :
92 : 0 : errno = 0;
93 : 0 : val = strtoul(value, NULL, 0);
94 [ # # ]: 0 : if (errno)
95 : : val = 0;
96 : :
97 : 0 : *(uint32_t *)extra_args = val;
98 : :
99 : 0 : return 0;
100 : : }
101 : :
102 : : static int
103 : 0 : parse_flow_max_priority(const char *key, const char *value, void *extra_args)
104 : : {
105 : : RTE_SET_USED(key);
106 : : uint16_t val;
107 : :
108 : 0 : val = atoi(value);
109 : :
110 [ # # ]: 0 : if (val < 1 || val > ROC_NPC_MAX_MCAM_PRIORITY)
111 : : return -EINVAL;
112 : :
113 : 0 : *(uint16_t *)extra_args = val;
114 : :
115 : 0 : return 0;
116 : : }
117 : :
118 : : static int
119 : 0 : parse_flow_prealloc_size(const char *key, const char *value, void *extra_args)
120 : : {
121 : : RTE_SET_USED(key);
122 : : uint16_t val;
123 : :
124 : 0 : val = atoi(value);
125 : :
126 : : /* Limit the prealloc size to 32 */
127 [ # # ]: 0 : if (val < 1 || val > 32)
128 : : return -EINVAL;
129 : :
130 : 0 : *(uint16_t *)extra_args = val;
131 : :
132 : 0 : return 0;
133 : : }
134 : :
135 : : static int
136 : 0 : parse_reta_size(const char *key, const char *value, void *extra_args)
137 : : {
138 : : RTE_SET_USED(key);
139 : : uint32_t val;
140 : :
141 : 0 : val = atoi(value);
142 : :
143 [ # # ]: 0 : if (val <= RTE_ETH_RSS_RETA_SIZE_64)
144 : : val = ROC_NIX_RSS_RETA_SZ_64;
145 [ # # ]: 0 : else if (val > RTE_ETH_RSS_RETA_SIZE_64 && val <= RTE_ETH_RSS_RETA_SIZE_128)
146 : : val = ROC_NIX_RSS_RETA_SZ_128;
147 [ # # ]: 0 : else if (val > RTE_ETH_RSS_RETA_SIZE_128 && val <= RTE_ETH_RSS_RETA_SIZE_256)
148 : : val = ROC_NIX_RSS_RETA_SZ_256;
149 : : else
150 : : val = ROC_NIX_RSS_RETA_SZ_64;
151 : :
152 : 0 : *(uint16_t *)extra_args = val;
153 : :
154 : 0 : return 0;
155 : : }
156 : :
157 : : static int
158 : 0 : parse_pre_l2_hdr_info(const char *key, const char *value, void *extra_args)
159 : : {
160 : : struct flow_pre_l2_size_info *info =
161 : : (struct flow_pre_l2_size_info *)extra_args;
162 : 0 : char *tok1 = NULL, *tok2 = NULL;
163 : : uint16_t off, off_mask, dir;
164 : :
165 : : RTE_SET_USED(key);
166 : 0 : off = strtol(value, &tok1, 16);
167 : 0 : tok1++;
168 : 0 : off_mask = strtol(tok1, &tok2, 16);
169 : 0 : tok2++;
170 : 0 : dir = strtol(tok2, 0, 16);
171 [ # # # # ]: 0 : if (off >= 256 || off_mask < 1 || off_mask >= 256 || dir > 1)
172 : : return -EINVAL;
173 : 0 : info->pre_l2_size_off = off;
174 : 0 : info->pre_l2_size_off_mask = off_mask;
175 : 0 : info->pre_l2_size_shift_dir = dir;
176 : :
177 : 0 : return 0;
178 : : }
179 : :
180 : : static int
181 : 0 : parse_flag(const char *key, const char *value, void *extra_args)
182 : : {
183 : : RTE_SET_USED(key);
184 : :
185 : 0 : *(uint16_t *)extra_args = atoi(value);
186 : :
187 : 0 : return 0;
188 : : }
189 : :
190 : : static int
191 : 0 : parse_sqb_count(const char *key, const char *value, void *extra_args)
192 : : {
193 : : RTE_SET_USED(key);
194 : : uint32_t val;
195 : :
196 : : val = atoi(value);
197 : :
198 : 0 : *(uint16_t *)extra_args = val;
199 : :
200 : 0 : return 0;
201 : : }
202 : :
203 : : static int
204 : 0 : parse_meta_bufsize(const char *key, const char *value, void *extra_args)
205 : : {
206 : : RTE_SET_USED(key);
207 : : uint32_t val;
208 : :
209 : 0 : errno = 0;
210 : 0 : val = strtoul(value, NULL, 0);
211 [ # # ]: 0 : if (errno)
212 : : val = 0;
213 : :
214 : 0 : *(uint32_t *)extra_args = val;
215 : :
216 : 0 : return 0;
217 : : }
218 : :
219 : : static int
220 : 0 : parse_switch_header_type(const char *key, const char *value, void *extra_args)
221 : : {
222 : : RTE_SET_USED(key);
223 : :
224 [ # # ]: 0 : if (strcmp(value, "higig2") == 0)
225 : 0 : *(uint16_t *)extra_args = ROC_PRIV_FLAGS_HIGIG;
226 : :
227 [ # # ]: 0 : if (strcmp(value, "dsa") == 0)
228 : 0 : *(uint16_t *)extra_args = ROC_PRIV_FLAGS_EDSA;
229 : :
230 [ # # ]: 0 : if (strcmp(value, "chlen90b") == 0)
231 : 0 : *(uint16_t *)extra_args = ROC_PRIV_FLAGS_LEN_90B;
232 : :
233 [ # # ]: 0 : if (strcmp(value, "exdsa") == 0)
234 : 0 : *(uint16_t *)extra_args = ROC_PRIV_FLAGS_EXDSA;
235 : :
236 [ # # ]: 0 : if (strcmp(value, "vlan_exdsa") == 0)
237 : 0 : *(uint16_t *)extra_args = ROC_PRIV_FLAGS_VLAN_EXDSA;
238 : :
239 [ # # ]: 0 : if (strcmp(value, "pre_l2") == 0)
240 : 0 : *(uint16_t *)extra_args = ROC_PRIV_FLAGS_PRE_L2;
241 : :
242 [ # # ]: 0 : if (strcmp(value, "skip_size") == 0)
243 : 0 : *(uint16_t *)extra_args = ROC_PRIV_FLAGS_SKIP_SIZE;
244 : :
245 : 0 : return 0;
246 : : }
247 : :
248 : : static int
249 : 0 : parse_skip_size_info(const char *key, const char *value, void *extra_args)
250 : : {
251 : : RTE_SET_USED(key);
252 : : uint32_t val;
253 : :
254 : 0 : errno = 0;
255 : 0 : val = strtoul(value, NULL, 0);
256 [ # # # # ]: 0 : if (errno || val > 255)
257 : : return -EINVAL;
258 : :
259 : 0 : *(uint16_t *)extra_args = val;
260 : :
261 : 0 : return 0;
262 : : }
263 : :
264 : : static int
265 : 0 : parse_sdp_channel_mask(const char *key, const char *value, void *extra_args)
266 : : {
267 : : RTE_SET_USED(key);
268 : : uint16_t chan = 0, mask = 0;
269 : 0 : char *next = 0;
270 : :
271 : : /* next will point to the separator '/' */
272 : 0 : chan = strtol(value, &next, 16);
273 : 0 : mask = strtol(++next, 0, 16);
274 : :
275 [ # # ]: 0 : if (chan > GENMASK(11, 0) || mask > GENMASK(11, 0))
276 : : return -EINVAL;
277 : :
278 : 0 : ((struct sdp_channel *)extra_args)->channel = chan;
279 : 0 : ((struct sdp_channel *)extra_args)->mask = mask;
280 : 0 : ((struct sdp_channel *)extra_args)->is_sdp_mask_set = true;
281 : :
282 : 0 : return 0;
283 : : }
284 : :
285 : : static int
286 : 0 : parse_val_u16(const char *key, const char *value, void *extra_args)
287 : : {
288 : : RTE_SET_USED(key);
289 : : uint16_t val;
290 : :
291 : 0 : val = atoi(value);
292 : :
293 : 0 : *(uint16_t *)extra_args = val;
294 : :
295 : 0 : return 0;
296 : : }
297 : :
298 : : #define CNXK_RSS_RETA_SIZE "reta_size"
299 : : #define CNXK_SCL_ENABLE "scalar_enable"
300 : : #define CNXK_TX_COMPL_ENA "tx_compl_ena"
301 : : #define CNXK_MAX_SQB_COUNT "max_sqb_count"
302 : : #define CNXK_FLOW_PREALLOC_SIZE "flow_prealloc_size"
303 : : #define CNXK_FLOW_MAX_PRIORITY "flow_max_priority"
304 : : #define CNXK_SWITCH_HEADER_TYPE "switch_header"
305 : : #define CNXK_RSS_TAG_AS_XOR "tag_as_xor"
306 : : #define CNXK_LOCK_RX_CTX "lock_rx_ctx"
307 : : #define CNXK_IPSEC_IN_MIN_SPI "ipsec_in_min_spi"
308 : : #define CNXK_IPSEC_IN_MAX_SPI "ipsec_in_max_spi"
309 : : #define CNXK_IPSEC_OUT_MAX_SA "ipsec_out_max_sa"
310 : : #define CNXK_OUTB_NB_DESC "outb_nb_desc"
311 : : #define CNXK_NO_INL_DEV "no_inl_dev"
312 : : #define CNXK_OUTB_NB_CRYPTO_QS "outb_nb_crypto_qs"
313 : : #define CNXK_SDP_CHANNEL_MASK "sdp_channel_mask"
314 : : #define CNXK_FLOW_PRE_L2_INFO "flow_pre_l2_info"
315 : : #define CNXK_CUSTOM_SA_ACT "custom_sa_act"
316 : : #define CNXK_SQB_SLACK "sqb_slack"
317 : : #define CNXK_NIX_META_BUF_SZ "meta_buf_sz"
318 : : #define CNXK_FLOW_AGING_POLL_FREQ "aging_poll_freq"
319 : : #define CNXK_NIX_RX_INJ_ENABLE "rx_inj_ena"
320 : : #define CNXK_CUSTOM_META_AURA_DIS "custom_meta_aura_dis"
321 : : #define CNXK_CUSTOM_INB_SA "custom_inb_sa"
322 : : #define CNXK_FORCE_TAIL_DROP "force_tail_drop"
323 : : #define CNXK_DIS_XQE_DROP "disable_xqe_drop"
324 : : #define CNXK_RXC_STEP "rxc_step"
325 : : #define CNXK_SKIP_SIZE_INFO "skip_size_info"
326 : :
327 : : int
328 : 0 : cnxk_ethdev_parse_devargs(struct rte_devargs *devargs, struct cnxk_eth_dev *dev)
329 : : {
330 : 0 : uint16_t aging_thread_poll_freq = ROC_NPC_AGE_POLL_FREQ_MIN;
331 : 0 : uint16_t reta_sz = ROC_NIX_RSS_RETA_SZ_64;
332 : 0 : uint16_t sqb_count = CNXK_NIX_TX_MAX_SQB;
333 : : struct flow_pre_l2_size_info pre_l2_info;
334 : 0 : uint32_t ipsec_in_max_spi = BIT(8) - 1;
335 : 0 : uint16_t sqb_slack = ROC_NIX_SQB_SLACK;
336 : 0 : uint32_t ipsec_out_max_sa = BIT(12);
337 : 0 : uint16_t custom_meta_aura_dis = 0;
338 : 0 : uint16_t flow_prealloc_size = 1;
339 : 0 : uint16_t switch_header_type = 0;
340 : 0 : uint16_t skip_size_info = 0;
341 : 0 : uint16_t flow_max_priority = 3;
342 : 0 : uint16_t outb_nb_crypto_qs = 1;
343 : 0 : uint32_t ipsec_in_min_spi = 0;
344 : 0 : uint16_t outb_nb_desc = 8200;
345 : : struct sdp_channel sdp_chan;
346 : 0 : uint16_t rss_tag_as_xor = 0;
347 : 0 : uint16_t force_tail_drop = 0;
348 : 0 : uint16_t scalar_enable = 0;
349 : 0 : uint16_t tx_compl_ena = 0;
350 : 0 : uint16_t custom_sa_act = 0;
351 : 0 : uint16_t custom_inb_sa = 0;
352 : : struct rte_kvargs *kvlist;
353 : 0 : uint16_t dis_xqe_drop = 0;
354 : 0 : uint32_t meta_buf_sz = 0;
355 : 0 : uint16_t lock_rx_ctx = 0;
356 : 0 : uint16_t rx_inj_ena = 0;
357 : 0 : uint16_t no_inl_dev = 0;
358 [ # # ]: 0 : uint32_t rxc_step = 0;
359 : :
360 : : memset(&sdp_chan, 0, sizeof(sdp_chan));
361 : : memset(&pre_l2_info, 0, sizeof(struct flow_pre_l2_size_info));
362 : :
363 [ # # ]: 0 : if (devargs == NULL)
364 : 0 : goto null_devargs;
365 : :
366 : 0 : kvlist = rte_kvargs_parse(devargs->args, NULL);
367 [ # # ]: 0 : if (kvlist == NULL)
368 : 0 : goto exit;
369 : :
370 : 0 : rte_kvargs_process(kvlist, CNXK_RSS_RETA_SIZE, &parse_reta_size,
371 : : &reta_sz);
372 : 0 : rte_kvargs_process(kvlist, CNXK_SCL_ENABLE, &parse_flag,
373 : : &scalar_enable);
374 : 0 : rte_kvargs_process(kvlist, CNXK_TX_COMPL_ENA, &parse_flag,
375 : : &tx_compl_ena);
376 : 0 : rte_kvargs_process(kvlist, CNXK_MAX_SQB_COUNT, &parse_sqb_count,
377 : : &sqb_count);
378 : 0 : rte_kvargs_process(kvlist, CNXK_FLOW_PREALLOC_SIZE,
379 : : &parse_flow_prealloc_size, &flow_prealloc_size);
380 : 0 : rte_kvargs_process(kvlist, CNXK_FLOW_MAX_PRIORITY,
381 : : &parse_flow_max_priority, &flow_max_priority);
382 : 0 : rte_kvargs_process(kvlist, CNXK_SWITCH_HEADER_TYPE,
383 : : &parse_switch_header_type, &switch_header_type);
384 : 0 : rte_kvargs_process(kvlist, CNXK_RSS_TAG_AS_XOR, &parse_flag,
385 : : &rss_tag_as_xor);
386 : 0 : rte_kvargs_process(kvlist, CNXK_LOCK_RX_CTX, &parse_flag, &lock_rx_ctx);
387 : 0 : rte_kvargs_process(kvlist, CNXK_IPSEC_IN_MIN_SPI,
388 : : &parse_ipsec_in_spi_range, &ipsec_in_min_spi);
389 : 0 : rte_kvargs_process(kvlist, CNXK_IPSEC_IN_MAX_SPI,
390 : : &parse_ipsec_in_spi_range, &ipsec_in_max_spi);
391 : 0 : rte_kvargs_process(kvlist, CNXK_IPSEC_OUT_MAX_SA,
392 : : &parse_ipsec_out_max_sa, &ipsec_out_max_sa);
393 : 0 : rte_kvargs_process(kvlist, CNXK_OUTB_NB_DESC, &parse_outb_nb_desc,
394 : : &outb_nb_desc);
395 : 0 : rte_kvargs_process(kvlist, CNXK_OUTB_NB_CRYPTO_QS,
396 : : &parse_outb_nb_crypto_qs, &outb_nb_crypto_qs);
397 : 0 : rte_kvargs_process(kvlist, CNXK_NO_INL_DEV, &parse_flag, &no_inl_dev);
398 : 0 : rte_kvargs_process(kvlist, CNXK_SDP_CHANNEL_MASK,
399 : : &parse_sdp_channel_mask, &sdp_chan);
400 : 0 : rte_kvargs_process(kvlist, CNXK_FLOW_PRE_L2_INFO,
401 : : &parse_pre_l2_hdr_info, &pre_l2_info);
402 : 0 : rte_kvargs_process(kvlist, CNXK_CUSTOM_SA_ACT, &parse_flag,
403 : : &custom_sa_act);
404 : 0 : rte_kvargs_process(kvlist, CNXK_SQB_SLACK, &parse_sqb_count,
405 : : &sqb_slack);
406 : 0 : rte_kvargs_process(kvlist, CNXK_NIX_META_BUF_SZ, &parse_meta_bufsize, &meta_buf_sz);
407 : 0 : rte_kvargs_process(kvlist, CNXK_FLOW_AGING_POLL_FREQ, &parse_val_u16,
408 : : &aging_thread_poll_freq);
409 : 0 : rte_kvargs_process(kvlist, CNXK_NIX_RX_INJ_ENABLE, &parse_flag, &rx_inj_ena);
410 : 0 : rte_kvargs_process(kvlist, CNXK_CUSTOM_META_AURA_DIS, &parse_flag,
411 : : &custom_meta_aura_dis);
412 : 0 : rte_kvargs_process(kvlist, CNXK_CUSTOM_INB_SA, &parse_flag, &custom_inb_sa);
413 : 0 : rte_kvargs_process(kvlist, CNXK_FORCE_TAIL_DROP, &parse_flag, &force_tail_drop);
414 : 0 : rte_kvargs_process(kvlist, CNXK_DIS_XQE_DROP, &parse_flag, &dis_xqe_drop);
415 : 0 : rte_kvargs_process(kvlist, CNXK_RXC_STEP, &parse_rxc_step, &rxc_step);
416 : 0 : rte_kvargs_process(kvlist, CNXK_SKIP_SIZE_INFO, &parse_skip_size_info,
417 : : &skip_size_info);
418 : 0 : rte_kvargs_free(kvlist);
419 : :
420 : 0 : null_devargs:
421 : 0 : dev->scalar_ena = !!scalar_enable;
422 : 0 : dev->tx_compl_ena = !!tx_compl_ena;
423 : 0 : dev->inb.no_inl_dev = !!no_inl_dev;
424 : 0 : dev->inb.min_spi = ipsec_in_min_spi;
425 : 0 : dev->inb.max_spi = ipsec_in_max_spi;
426 : 0 : dev->inb.custom_meta_aura_dis = custom_meta_aura_dis;
427 : 0 : dev->outb.max_sa = ipsec_out_max_sa;
428 : 0 : dev->outb.nb_desc = outb_nb_desc;
429 : 0 : dev->outb.nb_crypto_qs = outb_nb_crypto_qs;
430 : 0 : dev->nix.ipsec_out_max_sa = ipsec_out_max_sa;
431 : 0 : dev->nix.rss_tag_as_xor = !!rss_tag_as_xor;
432 : 0 : dev->nix.max_sqb_count = sqb_count;
433 : 0 : dev->nix.reta_sz = reta_sz;
434 : 0 : dev->nix.lock_rx_ctx = lock_rx_ctx;
435 : 0 : dev->nix.custom_sa_action = custom_sa_act;
436 : 0 : dev->nix.sqb_slack = sqb_slack;
437 [ # # ]: 0 : dev->nix.custom_inb_sa = custom_inb_sa;
438 : :
439 [ # # ]: 0 : if (roc_feature_nix_has_own_meta_aura())
440 : 0 : dev->nix.meta_buf_sz = meta_buf_sz;
441 : :
442 : 0 : dev->npc.flow_prealloc_size = flow_prealloc_size;
443 : :
444 [ # # ]: 0 : if (roc_model_is_cn20k())
445 : 0 : dev->npc.flow_max_priority = ROC_NPC_MAX_MCAM_PRIORITY;
446 : : else
447 : 0 : dev->npc.flow_max_priority = flow_max_priority;
448 : :
449 : 0 : dev->npc.switch_header_type = switch_header_type;
450 : 0 : dev->npc.skip_size = skip_size_info;
451 : 0 : dev->npc.sdp_channel = sdp_chan.channel;
452 : 0 : dev->npc.sdp_channel_mask = sdp_chan.mask;
453 : 0 : dev->npc.is_sdp_mask_set = sdp_chan.is_sdp_mask_set;
454 : 0 : dev->npc.pre_l2_size_offset = pre_l2_info.pre_l2_size_off;
455 : 0 : dev->npc.pre_l2_size_offset_mask = pre_l2_info.pre_l2_size_off_mask;
456 : 0 : dev->npc.pre_l2_size_shift_dir = pre_l2_info.pre_l2_size_shift_dir;
457 [ # # ]: 0 : dev->npc.flow_age.aging_poll_freq = aging_thread_poll_freq;
458 [ # # ]: 0 : if (roc_feature_nix_has_rx_inject())
459 : 0 : dev->nix.rx_inj_ena = rx_inj_ena;
460 : 0 : dev->nix.force_tail_drop = force_tail_drop;
461 : 0 : dev->nix.dis_xqe_drop = !!dis_xqe_drop;
462 : 0 : dev->nix.rxc_step = rxc_step;
463 : 0 : return 0;
464 : : exit:
465 : 0 : return -EINVAL;
466 : : }
467 : :
468 : : RTE_PMD_REGISTER_PARAM_STRING(net_cnxk,
469 : : CNXK_RSS_RETA_SIZE "=<64|128|256>"
470 : : CNXK_SCL_ENABLE "=1"
471 : : CNXK_TX_COMPL_ENA "=1"
472 : : CNXK_MAX_SQB_COUNT "=<8-512>"
473 : : CNXK_FLOW_PREALLOC_SIZE "=<1-32>"
474 : : CNXK_FLOW_MAX_PRIORITY "=<1-32>"
475 : : CNXK_SWITCH_HEADER_TYPE "=<higig2|dsa|chlen90b|skip_size>"
476 : : CNXK_RSS_TAG_AS_XOR "=1"
477 : : CNXK_IPSEC_IN_MAX_SPI "=<1-65535>"
478 : : CNXK_OUTB_NB_DESC "=<1-65535>"
479 : : CNXK_FLOW_PRE_L2_INFO "=<0-255>/<1-255>/<0-1>"
480 : : CNXK_OUTB_NB_CRYPTO_QS "=<1-64>"
481 : : CNXK_NO_INL_DEV "=0"
482 : : CNXK_SDP_CHANNEL_MASK "=<1-4095>/<1-4095>"
483 : : CNXK_CUSTOM_SA_ACT "=1"
484 : : CNXK_SQB_SLACK "=<12-512>"
485 : : CNXK_FLOW_AGING_POLL_FREQ "=<10-65535>"
486 : : CNXK_NIX_RX_INJ_ENABLE "=1"
487 : : CNXK_CUSTOM_META_AURA_DIS "=1"
488 : : CNXK_FORCE_TAIL_DROP "=1"
489 : : CNXK_DIS_XQE_DROP "=1"
490 : : CNXK_RXC_STEP "=<0-1048575>"
491 : : CNXK_SKIP_SIZE_INFO "=<0x0-0xff>");
|