net/bnxt: support EM/EEM
[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                   int           dir);
156
157 /**
158  * Sends EM operation request to Firmware
159  */
160 int tf_msg_em_op(struct tf *tfp,
161                  int        dir,
162                  uint16_t   op);
163
164 /**
165  * Sends tcam entry 'set' to the Firmware.
166  *
167  * [in] tfp
168  *   Pointer to session handle
169  *
170  * [in] parms
171  *   Pointer to set parameters
172  *
173  * Returns:
174  *  0 on Success else internal Truflow error
175  */
176 int tf_msg_tcam_entry_set(struct tf *tfp,
177                           struct tf_set_tcam_entry_parms *parms);
178
179 /**
180  * Sends tcam entry 'free' to the Firmware.
181  *
182  * [in] tfp
183  *   Pointer to session handle
184  *
185  * [in] parms
186  *   Pointer to free parameters
187  *
188  * Returns:
189  *  0 on Success else internal Truflow error
190  */
191 int tf_msg_tcam_entry_free(struct tf *tfp,
192                            struct tf_free_tcam_entry_parms *parms);
193
194 /**
195  * Sends Set message of a Table Type element to the firmware.
196  *
197  * [in] tfp
198  *   Pointer to session handle
199  *
200  * [in] dir
201  *   Direction location of the element to set
202  *
203  * [in] type
204  *   Type of the object to set
205  *
206  * [in] size
207  *   Size of the data to set
208  *
209  * [in] data
210  *   Data to set
211  *
212  * [in] index
213  *   Index to set
214  *
215  * Returns:
216  *   0 - Success
217  */
218 int tf_msg_set_tbl_entry(struct tf *tfp,
219                          enum tf_dir dir,
220                          enum tf_tbl_type type,
221                          uint16_t size,
222                          uint8_t *data,
223                          uint32_t index);
224
225 /**
226  * Sends get message of a Table Type element to the firmware.
227  *
228  * [in] tfp
229  *   Pointer to session handle
230  *
231  * [in] dir
232  *   Direction location of the element to get
233  *
234  * [in] type
235  *   Type of the object to get
236  *
237  * [in] size
238  *   Size of the data read
239  *
240  * [in] data
241  *   Data read
242  *
243  * [in] index
244  *   Index to get
245  *
246  * Returns:
247  *   0 - Success
248  */
249 int tf_msg_get_tbl_entry(struct tf *tfp,
250                          enum tf_dir dir,
251                          enum tf_tbl_type type,
252                          uint16_t size,
253                          uint8_t *data,
254                          uint32_t index);
255
256 #endif  /* _TF_MSG_H_ */