net/bnxt: add Truflow flush-timer to alloc table scope
[dpdk.git] / drivers / net / bnxt / tf_core / tf_msg.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2019-2020 Broadcom
3  * All rights reserved.
4  */
5
6 #ifndef _TF_MSG_H_
7 #define _TF_MSG_H_
8
9 #include "tf_tbl.h"
10 #include "tf_rm.h"
11
12 struct tf;
13
14 /**
15  * Sends session open request to Firmware
16  *
17  * [in] session
18  *   Pointer to session handle
19  *
20  * [in] ctrl_chan_name
21  *   PCI name of the control channel
22  *
23  * [in/out] fw_session_id
24  *   Pointer to the fw_session_id that is allocated on firmware side
25  *
26  * Returns:
27  *
28  */
29 int tf_msg_session_open(struct tf *tfp,
30                         char *ctrl_chan_name,
31                         uint8_t *fw_session_id);
32
33 /**
34  * Sends session close request to Firmware
35  *
36  * [in] session
37  *   Pointer to session handle
38  *
39  * [in] fw_session_id
40  *   Pointer to the fw_session_id that is assigned to the session at
41  *   time of session open
42  *
43  * Returns:
44  *
45  */
46 int tf_msg_session_attach(struct tf *tfp,
47                           char *ctrl_channel_name,
48                           uint8_t tf_fw_session_id);
49
50 /**
51  * Sends session close request to Firmware
52  *
53  * [in] session
54  *   Pointer to session handle
55  *
56  * Returns:
57  *
58  */
59 int tf_msg_session_close(struct tf *tfp);
60
61 /**
62  * Sends session query config request to TF Firmware
63  */
64 int tf_msg_session_qcfg(struct tf *tfp);
65
66 /**
67  * Sends session HW resource query capability request to TF Firmware
68  */
69 int tf_msg_session_hw_resc_qcaps(struct tf *tfp,
70                                  enum tf_dir dir,
71                                  struct tf_rm_hw_query *hw_query);
72
73 /**
74  * Sends session HW resource allocation request to TF Firmware
75  */
76 int tf_msg_session_hw_resc_alloc(struct tf *tfp,
77                                  enum tf_dir dir,
78                                  struct tf_rm_hw_alloc *hw_alloc,
79                                  struct tf_rm_entry *hw_entry);
80
81 /**
82  * Sends session HW resource free request to TF Firmware
83  */
84 int tf_msg_session_hw_resc_free(struct tf *tfp,
85                                 enum tf_dir dir,
86                                 struct tf_rm_entry *hw_entry);
87
88 /**
89  * Sends session HW resource flush request to TF Firmware
90  */
91 int tf_msg_session_hw_resc_flush(struct tf *tfp,
92                                  enum tf_dir dir,
93                                  struct tf_rm_entry *hw_entry);
94
95 /**
96  * Sends session SRAM resource query capability request to TF Firmware
97  */
98 int tf_msg_session_sram_resc_qcaps(struct tf *tfp,
99                                    enum tf_dir dir,
100                                    struct tf_rm_sram_query *sram_query);
101
102 /**
103  * Sends session SRAM resource allocation request to TF Firmware
104  */
105 int tf_msg_session_sram_resc_alloc(struct tf *tfp,
106                                    enum tf_dir dir,
107                                    struct tf_rm_sram_alloc *sram_alloc,
108                                    struct tf_rm_entry *sram_entry);
109
110 /**
111  * Sends session SRAM resource free request to TF Firmware
112  */
113 int tf_msg_session_sram_resc_free(struct tf *tfp,
114                                   enum tf_dir dir,
115                                   struct tf_rm_entry *sram_entry);
116
117 /**
118  * Sends session SRAM resource flush request to TF Firmware
119  */
120 int tf_msg_session_sram_resc_flush(struct tf *tfp,
121                                    enum tf_dir dir,
122                                    struct tf_rm_entry *sram_entry);
123
124 /**
125  * Sends EM mem register request to Firmware
126  */
127 int tf_msg_em_mem_rgtr(struct tf *tfp,
128                        int           page_lvl,
129                        int           page_size,
130                        uint64_t      dma_addr,
131                        uint16_t     *ctx_id);
132
133 /**
134  * Sends EM mem unregister request to Firmware
135  */
136 int tf_msg_em_mem_unrgtr(struct tf *tfp,
137                          uint16_t     *ctx_id);
138
139 /**
140  * Sends EM qcaps request to Firmware
141  */
142 int tf_msg_em_qcaps(struct tf *tfp,
143                     int dir,
144                     struct tf_em_caps *em_caps);
145
146 /**
147  * Sends EM config request to Firmware
148  */
149 int tf_msg_em_cfg(struct tf *tfp,
150                   uint32_t      num_entries,
151                   uint16_t      key0_ctx_id,
152                   uint16_t      key1_ctx_id,
153                   uint16_t      record_ctx_id,
154                   uint16_t      efc_ctx_id,
155                   uint8_t       flush_interval,
156                   int           dir);
157
158 /**
159  * Sends EM operation request to Firmware
160  */
161 int tf_msg_em_op(struct tf *tfp,
162                  int        dir,
163                  uint16_t   op);
164
165 /**
166  * Sends tcam entry 'set' to the Firmware.
167  *
168  * [in] tfp
169  *   Pointer to session handle
170  *
171  * [in] parms
172  *   Pointer to set parameters
173  *
174  * Returns:
175  *  0 on Success else internal Truflow error
176  */
177 int tf_msg_tcam_entry_set(struct tf *tfp,
178                           struct tf_set_tcam_entry_parms *parms);
179
180 /**
181  * Sends tcam entry 'free' to the Firmware.
182  *
183  * [in] tfp
184  *   Pointer to session handle
185  *
186  * [in] parms
187  *   Pointer to free parameters
188  *
189  * Returns:
190  *  0 on Success else internal Truflow error
191  */
192 int tf_msg_tcam_entry_free(struct tf *tfp,
193                            struct tf_free_tcam_entry_parms *parms);
194
195 /**
196  * Sends Set message of a Table Type element to the firmware.
197  *
198  * [in] tfp
199  *   Pointer to session handle
200  *
201  * [in] dir
202  *   Direction location of the element to set
203  *
204  * [in] type
205  *   Type of the object to set
206  *
207  * [in] size
208  *   Size of the data to set
209  *
210  * [in] data
211  *   Data to set
212  *
213  * [in] index
214  *   Index to set
215  *
216  * Returns:
217  *   0 - Success
218  */
219 int tf_msg_set_tbl_entry(struct tf *tfp,
220                          enum tf_dir dir,
221                          enum tf_tbl_type type,
222                          uint16_t size,
223                          uint8_t *data,
224                          uint32_t index);
225
226 /**
227  * Sends get message of a Table Type element to the firmware.
228  *
229  * [in] tfp
230  *   Pointer to session handle
231  *
232  * [in] dir
233  *   Direction location of the element to get
234  *
235  * [in] type
236  *   Type of the object to get
237  *
238  * [in] size
239  *   Size of the data read
240  *
241  * [in] data
242  *   Data read
243  *
244  * [in] index
245  *   Index to get
246  *
247  * Returns:
248  *   0 - Success
249  */
250 int tf_msg_get_tbl_entry(struct tf *tfp,
251                          enum tf_dir dir,
252                          enum tf_tbl_type type,
253                          uint16_t size,
254                          uint8_t *data,
255                          uint32_t index);
256
257 #endif  /* _TF_MSG_H_ */