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