net/bnxt: support flow template for Thor
[dpdk.git] / drivers / net / bnxt / tf_ulp / bnxt_tf_common.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2014-2021 Broadcom
3  * All rights reserved.
4  */
5
6 #ifndef _BNXT_TF_COMMON_H_
7 #define _BNXT_TF_COMMON_H_
8
9 #include <inttypes.h>
10
11 #include "bnxt_ulp.h"
12 #include "ulp_template_db_enum.h"
13
14 #define BNXT_TF_DBG(lvl, fmt, args...)  PMD_DRV_LOG(lvl, fmt, ## args)
15
16 #ifdef RTE_LIBRTE_BNXT_TRUFLOW_DEBUG
17 #define BNXT_TF_INF(fmt, args...)       PMD_DRV_LOG(INFO, fmt, ## args)
18 #else
19 #define BNXT_TF_INF(fmt, args...)
20 #endif
21
22 #define BNXT_ULP_EM_FLOWS                       8192
23 #define BNXT_ULP_1M_FLOWS                       1000000
24 #define BNXT_EEM_RX_GLOBAL_ID_MASK              (BNXT_ULP_1M_FLOWS - 1)
25 #define BNXT_EEM_TX_GLOBAL_ID_MASK              (BNXT_ULP_1M_FLOWS - 1)
26 #define BNXT_EEM_HASH_KEY2_USED                 0x8000000
27 #define BNXT_EEM_RX_HW_HASH_KEY2_BIT            BNXT_ULP_1M_FLOWS
28 #define BNXT_ULP_DFLT_RX_MAX_KEY                512
29 #define BNXT_ULP_DFLT_RX_MAX_ACTN_ENTRY         256
30 #define BNXT_ULP_DFLT_RX_MEM                    0
31 #define BNXT_ULP_RX_NUM_FLOWS                   32
32 #define BNXT_ULP_DFLT_TX_MAX_KEY                512
33 #define BNXT_ULP_DFLT_TX_MAX_ACTN_ENTRY         256
34 #define BNXT_ULP_DFLT_TX_MEM                    0
35 #define BNXT_ULP_TX_NUM_FLOWS                   32
36
37 enum bnxt_tf_rc {
38         BNXT_TF_RC_PARSE_ERR    = -2,
39         BNXT_TF_RC_ERROR        = -1,
40         BNXT_TF_RC_SUCCESS      = 0,
41         BNXT_TF_RC_NORMAL       = 1,
42         BNXT_TF_RC_FID          = 2,
43 };
44
45 /* eth IPv4 Type */
46 enum bnxt_ulp_eth_ip_type {
47         BNXT_ULP_ETH_IPV4 = 4,
48         BNXT_ULP_ETH_IPV6 = 5,
49         BNXT_ULP_MAX_ETH_IP_TYPE = 0
50 };
51
52 /* ulp direction Type */
53 enum bnxt_ulp_direction_type {
54         BNXT_ULP_DIR_INVALID,
55         BNXT_ULP_DIR_INGRESS,
56         BNXT_ULP_DIR_EGRESS,
57 };
58
59 /* enumeration of the interface types */
60 enum bnxt_ulp_intf_type {
61         BNXT_ULP_INTF_TYPE_INVALID = 0,
62         BNXT_ULP_INTF_TYPE_PF,
63         BNXT_ULP_INTF_TYPE_TRUSTED_VF,
64         BNXT_ULP_INTF_TYPE_VF,
65         BNXT_ULP_INTF_TYPE_PF_REP,
66         BNXT_ULP_INTF_TYPE_VF_REP,
67         BNXT_ULP_INTF_TYPE_PHY_PORT,
68         BNXT_ULP_INTF_TYPE_LAST
69 };
70
71 struct bnxt_ulp_mark_tbl *
72 bnxt_ulp_cntxt_ptr2_mark_db_get(struct bnxt_ulp_context *ulp_ctx);
73
74 int32_t
75 bnxt_ulp_cntxt_ptr2_mark_db_set(struct bnxt_ulp_context *ulp_ctx,
76                                 struct bnxt_ulp_mark_tbl *mark_tbl);
77
78 #endif /* _BNXT_TF_COMMON_H_ */