xref: /dpdk/drivers/net/ntnic/include/stream_binary_flow_api.h (revision c6821abf58e8e53ca800cbe2cbb30c34536dd682)
11d3f62a0SOleksandr Kolomeiets /*
21d3f62a0SOleksandr Kolomeiets  * SPDX-License-Identifier: BSD-3-Clause
31d3f62a0SOleksandr Kolomeiets  * Copyright(c) 2023 Napatech A/S
41d3f62a0SOleksandr Kolomeiets  */
51d3f62a0SOleksandr Kolomeiets 
61d3f62a0SOleksandr Kolomeiets #ifndef _STREAM_BINARY_FLOW_API_H_
71d3f62a0SOleksandr Kolomeiets #define _STREAM_BINARY_FLOW_API_H_
81d3f62a0SOleksandr Kolomeiets 
9ed01e436SSerhii Iliushyk #include "rte_flow.h"
10ed01e436SSerhii Iliushyk #include "rte_flow_driver.h"
11e02fdb65SSerhii Iliushyk 
12e02fdb65SSerhii Iliushyk /* Max RSS hash key length in bytes */
13e02fdb65SSerhii Iliushyk #define MAX_RSS_KEY_LEN 40
14e02fdb65SSerhii Iliushyk 
151d3f62a0SOleksandr Kolomeiets /*
161d3f62a0SOleksandr Kolomeiets  * Flow frontend for binary programming interface
171d3f62a0SOleksandr Kolomeiets  */
181d3f62a0SOleksandr Kolomeiets 
191d3f62a0SOleksandr Kolomeiets #define FLOW_MAX_QUEUES 128
201d3f62a0SOleksandr Kolomeiets 
21*c6821abfSDanylo Vodopianov #define RAW_ENCAP_DECAP_ELEMS_MAX 16
22b01eb812SDanylo Vodopianov /*
23b01eb812SDanylo Vodopianov  * Flow eth dev profile determines how the FPGA module resources are
24b01eb812SDanylo Vodopianov  * managed and what features are available
25b01eb812SDanylo Vodopianov  */
26b01eb812SDanylo Vodopianov enum flow_eth_dev_profile {
27b01eb812SDanylo Vodopianov 	FLOW_ETH_DEV_PROFILE_INLINE = 0,
28b01eb812SDanylo Vodopianov };
29b01eb812SDanylo Vodopianov 
301d3f62a0SOleksandr Kolomeiets struct flow_queue_id_s {
311d3f62a0SOleksandr Kolomeiets 	int id;
321d3f62a0SOleksandr Kolomeiets 	int hw_id;
331d3f62a0SOleksandr Kolomeiets };
341d3f62a0SOleksandr Kolomeiets 
35*c6821abfSDanylo Vodopianov /*
36*c6821abfSDanylo Vodopianov  * RTE_FLOW_ACTION_TYPE_RAW_ENCAP
37*c6821abfSDanylo Vodopianov  */
38*c6821abfSDanylo Vodopianov struct flow_action_raw_encap {
39*c6821abfSDanylo Vodopianov 	uint8_t *data;
40*c6821abfSDanylo Vodopianov 	uint8_t *preserve;
41*c6821abfSDanylo Vodopianov 	size_t size;
42*c6821abfSDanylo Vodopianov 	struct rte_flow_item items[RAW_ENCAP_DECAP_ELEMS_MAX];
43*c6821abfSDanylo Vodopianov 	int item_count;
44*c6821abfSDanylo Vodopianov };
45*c6821abfSDanylo Vodopianov 
46*c6821abfSDanylo Vodopianov /*
47*c6821abfSDanylo Vodopianov  * RTE_FLOW_ACTION_TYPE_RAW_DECAP
48*c6821abfSDanylo Vodopianov  */
49*c6821abfSDanylo Vodopianov struct flow_action_raw_decap {
50*c6821abfSDanylo Vodopianov 	uint8_t *data;
51*c6821abfSDanylo Vodopianov 	size_t size;
52*c6821abfSDanylo Vodopianov 	struct rte_flow_item items[RAW_ENCAP_DECAP_ELEMS_MAX];
53*c6821abfSDanylo Vodopianov 	int item_count;
54*c6821abfSDanylo Vodopianov };
55*c6821abfSDanylo Vodopianov 
561d3f62a0SOleksandr Kolomeiets struct flow_eth_dev;             /* port device */
57b01eb812SDanylo Vodopianov struct flow_handle;
581d3f62a0SOleksandr Kolomeiets 
591d3f62a0SOleksandr Kolomeiets #endif  /* _STREAM_BINARY_FLOW_API_H_ */
60