1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2019-2020 Broadcom
9 #include <rte_common.h>
10 #include <hsi_struct_def_dpdk.h>
18 /* HWRM Direct messages */
21 * Sends session open request to Firmware
24 * Pointer to session handle
27 * PCI name of the control channel
29 * [in/out] fw_session_id
30 * Pointer to the fw_session_id that is allocated on firmware side
33 * 0 on Success else internal Truflow error
35 int tf_msg_session_open(struct tf *tfp,
37 uint8_t *fw_session_id);
40 * Sends session close request to Firmware
43 * Pointer to session handle
46 * Pointer to the fw_session_id that is assigned to the session at
47 * time of session open
50 * 0 on Success else internal Truflow error
52 int tf_msg_session_attach(struct tf *tfp,
53 char *ctrl_channel_name,
54 uint8_t tf_fw_session_id);
57 * Sends session close request to Firmware
60 * Pointer to session handle
63 * 0 on Success else internal Truflow error
65 int tf_msg_session_close(struct tf *tfp);
68 * Sends session query config request to TF Firmware
71 * Pointer to session handle
74 * 0 on Success else internal Truflow error
76 int tf_msg_session_qcfg(struct tf *tfp);
79 * Sends session HW resource query capability request to TF Firmware
82 * Pointer to TF handle
85 * Receive or Transmit direction
88 * Number of elements in the query. Should be set to the max
89 * elements for the device type
92 * Pointer to an array of query elements
95 * Pointer to the reservation strategy
98 * 0 on Success else internal Truflow error
100 int tf_msg_session_resc_qcaps(struct tf *tfp,
103 struct tf_rm_resc_req_entry *query,
104 enum tf_rm_resc_resv_strategy *resv_strategy);
107 * Sends session HW resource allocation request to TF Firmware
110 * Pointer to TF handle
113 * Receive or Transmit direction
116 * Number of elements in the req and resv arrays
119 * Pointer to an array of request elements
122 * Pointer to an array of reserved elements
125 * 0 on Success else internal Truflow error
127 int tf_msg_session_resc_alloc(struct tf *tfp,
130 struct tf_rm_resc_req_entry *request,
131 struct tf_rm_resc_entry *resv);
134 * Sends session resource flush request to TF Firmware
137 * Pointer to TF handle
140 * Receive or Transmit direction
143 * Number of elements in the req and resv arrays
146 * Pointer to an array of reserved elements that needs to be flushed
149 * 0 on Success else internal Truflow error
151 int tf_msg_session_resc_flush(struct tf *tfp,
154 struct tf_rm_resc_entry *resv);
156 * Sends EM internal insert request to Firmware
159 * Pointer to TF handle
162 * Pointer to em insert parameter list
170 * [in] num_of_entries
171 * Number of entries to insert
174 * 0 on Success else internal Truflow error
176 int tf_msg_insert_em_internal_entry(struct tf *tfp,
177 struct tf_insert_em_entry_parms *params,
178 uint16_t *rptr_index,
180 uint8_t *num_of_entries);
182 * Sends EM internal delete request to Firmware
185 * Pointer to TF handle
188 * Pointer to em delete parameters
191 * 0 on Success else internal Truflow error
193 int tf_msg_delete_em_entry(struct tf *tfp,
194 struct tf_delete_em_entry_parms *em_parms);
197 * Sends EM mem register request to Firmware
200 * Pointer to TF handle
209 * DMA Address for the memory page
215 * 0 on Success else internal Truflow error
217 int tf_msg_em_mem_rgtr(struct tf *tfp,
224 * Sends EM mem unregister request to Firmware
227 * Pointer to TF handle
233 * 0 on Success else internal Truflow error
235 int tf_msg_em_mem_unrgtr(struct tf *tfp,
239 * Sends EM qcaps request to Firmware
242 * Pointer to TF handle
245 * Receive or Transmit direction
248 * Pointer to EM capabilities
251 * 0 on Success else internal Truflow error
253 int tf_msg_em_qcaps(struct tf *tfp,
255 struct tf_em_caps *em_caps);
258 * Sends EM config request to Firmware
261 * Pointer to TF handle
264 * EM Table, key 0, number of entries to configure
267 * EM Table, Key 0 context id
270 * EM Table, Key 1 context id
273 * EM Table, Record context id
276 * EM Table, EFC Table context id
278 * [in] flush_interval
279 * Flush pending HW cached flows every 1/10th of value set in
280 * seconds, both idle and active flows are flushed from the HW
281 * cache. If set to 0, this feature will be disabled.
284 * Receive or Transmit direction
287 * 0 on Success else internal Truflow error
289 int tf_msg_em_cfg(struct tf *tfp,
290 uint32_t num_entries,
291 uint16_t key0_ctx_id,
292 uint16_t key1_ctx_id,
293 uint16_t record_ctx_id,
295 uint8_t flush_interval,
299 * Sends EM operation request to Firmware
302 * Pointer to TF handle
305 * Receive or Transmit direction
311 * 0 on Success else internal Truflow error
313 int tf_msg_em_op(struct tf *tfp,
318 * Sends tcam entry 'set' to the Firmware.
321 * Pointer to session handle
324 * Pointer to set parameters
327 * 0 on Success else internal Truflow error
329 int tf_msg_tcam_entry_set(struct tf *tfp,
330 struct tf_tcam_set_parms *parms);
333 * Sends tcam entry 'free' to the Firmware.
336 * Pointer to session handle
339 * Pointer to free parameters
342 * 0 on Success else internal Truflow error
344 int tf_msg_tcam_entry_free(struct tf *tfp,
345 struct tf_tcam_free_parms *parms);
348 * Sends Set message of a Table Type element to the firmware.
351 * Pointer to session handle
354 * Direction location of the element to set
357 * Type of the object to set
360 * Size of the data to set
371 int tf_msg_set_tbl_entry(struct tf *tfp,
379 * Sends get message of a Table Type element to the firmware.
382 * Pointer to session handle
385 * Direction location of the element to get
388 * Type of the object to get
391 * Size of the data read
402 int tf_msg_get_tbl_entry(struct tf *tfp,
409 /* HWRM Tunneled messages */
412 * Sends bulk get message of a Table Type element to the firmware.
415 * Pointer to session handle
418 * Pointer to table get bulk parameters
421 * 0 on Success else internal Truflow error
423 int tf_msg_bulk_get_tbl_entry(struct tf *tfp,
426 uint32_t starting_idx,
427 uint16_t num_entries,
428 uint16_t entry_sz_in_bytes,
429 uint64_t physical_mem_addr);
431 #endif /* _TF_MSG_H_ */