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>
15 #include "tf_global_cfg.h"
19 /* HWRM Direct messages */
22 * Sends session open request to Firmware
25 * Pointer to session handle
28 * PCI name of the control channel
30 * [in/out] fw_session_id
31 * Pointer to the fw_session_id that is allocated on firmware side
34 * 0 on Success else internal Truflow error
36 int tf_msg_session_open(struct tf *tfp,
38 uint8_t *fw_session_id,
39 uint8_t *fw_session_client_id);
42 * Sends session close request to Firmware
45 * Pointer to session handle
48 * PCI name of the control channel
51 * Pointer to the fw_session_id that is assigned to the session at
52 * time of session open
55 * 0 on Success else internal Truflow error
57 int tf_msg_session_attach(struct tf *tfp,
58 char *ctrl_channel_name,
59 uint8_t tf_fw_session_id);
62 * Sends session client register request to Firmware
65 * Pointer to session handle
68 * PCI name of the control channel
70 * [in/out] fw_session_client_id
71 * Pointer to the fw_session_client_id that is allocated on firmware
75 * 0 on Success else internal Truflow error
77 int tf_msg_session_client_register(struct tf *tfp,
78 char *ctrl_channel_name,
79 uint8_t *fw_session_client_id);
82 * Sends session client unregister request to Firmware
85 * Pointer to session handle
87 * [in/out] fw_session_client_id
88 * Pointer to the fw_session_client_id that is allocated on firmware
92 * 0 on Success else internal Truflow error
94 int tf_msg_session_client_unregister(struct tf *tfp,
95 uint8_t fw_session_client_id);
98 * Sends session close request to Firmware
101 * Pointer to session handle
104 * 0 on Success else internal Truflow error
106 int tf_msg_session_close(struct tf *tfp);
109 * Sends session query config request to TF Firmware
112 * Pointer to session handle
115 * 0 on Success else internal Truflow error
117 int tf_msg_session_qcfg(struct tf *tfp);
120 * Sends session HW resource query capability request to TF Firmware
123 * Pointer to TF handle
126 * Receive or Transmit direction
129 * Number of elements in the query. Should be set to the max
130 * elements for the device type
133 * Pointer to an array of query elements
135 * [out] resv_strategy
136 * Pointer to the reservation strategy
139 * 0 on Success else internal Truflow error
141 int tf_msg_session_resc_qcaps(struct tf *tfp,
144 struct tf_rm_resc_req_entry *query,
145 enum tf_rm_resc_resv_strategy *resv_strategy);
148 * Sends session HW resource allocation request to TF Firmware
151 * Pointer to TF handle
154 * Receive or Transmit direction
157 * Number of elements in the req and resv arrays
160 * Pointer to an array of request elements
163 * Pointer to an array of reserved elements
166 * 0 on Success else internal Truflow error
168 int tf_msg_session_resc_alloc(struct tf *tfp,
171 struct tf_rm_resc_req_entry *request,
172 struct tf_rm_resc_entry *resv);
175 * Sends session resource flush request to TF Firmware
178 * Pointer to TF handle
181 * Receive or Transmit direction
184 * Number of elements in the req and resv arrays
187 * Pointer to an array of reserved elements that needs to be flushed
190 * 0 on Success else internal Truflow error
192 int tf_msg_session_resc_flush(struct tf *tfp,
195 struct tf_rm_resc_entry *resv);
197 * Sends EM internal insert request to Firmware
200 * Pointer to TF handle
203 * Pointer to em insert parameter list
211 * [in] num_of_entries
212 * Number of entries to insert
215 * 0 on Success else internal Truflow error
217 int tf_msg_insert_em_internal_entry(struct tf *tfp,
218 struct tf_insert_em_entry_parms *params,
219 uint16_t *rptr_index,
221 uint8_t *num_of_entries);
223 * Sends EM internal delete request to Firmware
226 * Pointer to TF handle
229 * Pointer to em delete parameters
232 * 0 on Success else internal Truflow error
234 int tf_msg_delete_em_entry(struct tf *tfp,
235 struct tf_delete_em_entry_parms *em_parms);
238 * Sends EM mem register request to Firmware
241 * Pointer to TF handle
250 * DMA Address for the memory page
256 * 0 on Success else internal Truflow error
258 int tf_msg_em_mem_rgtr(struct tf *tfp,
265 * Sends EM mem unregister request to Firmware
268 * Pointer to TF handle
274 * 0 on Success else internal Truflow error
276 int tf_msg_em_mem_unrgtr(struct tf *tfp,
280 * Sends EM qcaps request to Firmware
283 * Pointer to TF handle
286 * Receive or Transmit direction
289 * Pointer to EM capabilities
292 * 0 on Success else internal Truflow error
294 int tf_msg_em_qcaps(struct tf *tfp,
296 struct tf_em_caps *em_caps);
299 * Sends EM config request to Firmware
302 * Pointer to TF handle
305 * EM Table, key 0, number of entries to configure
308 * EM Table, Key 0 context id
311 * EM Table, Key 1 context id
314 * EM Table, Record context id
317 * EM Table, EFC Table context id
319 * [in] flush_interval
320 * Flush pending HW cached flows every 1/10th of value set in
321 * seconds, both idle and active flows are flushed from the HW
322 * cache. If set to 0, this feature will be disabled.
325 * Receive or Transmit direction
328 * 0 on Success else internal Truflow error
330 int tf_msg_em_cfg(struct tf *tfp,
331 uint32_t num_entries,
332 uint16_t key0_ctx_id,
333 uint16_t key1_ctx_id,
334 uint16_t record_ctx_id,
336 uint8_t flush_interval,
340 * Sends EM operation request to Firmware
343 * Pointer to TF handle
346 * Receive or Transmit direction
352 * 0 on Success else internal Truflow error
354 int tf_msg_em_op(struct tf *tfp,
359 * Sends tcam entry 'set' to the Firmware.
362 * Pointer to session handle
365 * Pointer to set parameters
368 * 0 on Success else internal Truflow error
370 int tf_msg_tcam_entry_set(struct tf *tfp,
371 struct tf_tcam_set_parms *parms);
374 * Sends tcam entry 'free' to the Firmware.
377 * Pointer to session handle
380 * Pointer to free parameters
383 * 0 on Success else internal Truflow error
385 int tf_msg_tcam_entry_free(struct tf *tfp,
386 struct tf_tcam_free_parms *parms);
389 * Sends Set message of a Table Type element to the firmware.
392 * Pointer to session handle
395 * Direction location of the element to set
398 * Type of the object to set
401 * Size of the data to set
412 int tf_msg_set_tbl_entry(struct tf *tfp,
420 * Sends get message of a Table Type element to the firmware.
423 * Pointer to session handle
426 * Direction location of the element to get
429 * Type of the object to get
432 * Size of the data read
443 int tf_msg_get_tbl_entry(struct tf *tfp,
450 /* HWRM Tunneled messages */
453 * Sends global cfg read request to Firmware
456 * Pointer to TF handle
459 * Pointer to read parameters
462 * 0 on Success else internal Truflow error
464 int tf_msg_get_global_cfg(struct tf *tfp,
465 struct tf_dev_global_cfg_parms *params);
468 * Sends global cfg update request to Firmware
471 * Pointer to TF handle
474 * Pointer to write parameters
477 * 0 on Success else internal Truflow error
479 int tf_msg_set_global_cfg(struct tf *tfp,
480 struct tf_dev_global_cfg_parms *params);
483 * Sends bulk get message of a Table Type element to the firmware.
486 * Pointer to session handle
489 * Pointer to table get bulk parameters
492 * 0 on Success else internal Truflow error
494 int tf_msg_bulk_get_tbl_entry(struct tf *tfp,
497 uint32_t starting_idx,
498 uint16_t num_entries,
499 uint16_t entry_sz_in_bytes,
500 uint64_t physical_mem_addr);
503 * Sends Set message of a IF Table Type element to the firmware.
506 * Pointer to session handle
509 * Pointer to IF table set parameters
512 * 0 on Success else internal Truflow error
514 int tf_msg_set_if_tbl_entry(struct tf *tfp,
515 struct tf_if_tbl_set_parms *params);
518 * Sends get message of a IF Table Type element to the firmware.
521 * Pointer to session handle
524 * Pointer to IF table get parameters
527 * 0 on Success else internal Truflow error
529 int tf_msg_get_if_tbl_entry(struct tf *tfp,
530 struct tf_if_tbl_get_parms *params);
532 #endif /* _TF_MSG_H_ */