1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2019-2021 Broadcom
9 #include <rte_common.h>
10 #include <hsi_struct_def_dpdk.h>
12 #include "tf_em_common.h"
16 #include "tf_global_cfg.h"
20 /* HWRM Direct messages */
23 * Sends session open request to Firmware
26 * Pointer to session handle
29 * PCI name of the control channel
31 * [in/out] fw_session_id
32 * Pointer to the fw_session_id that is allocated on firmware side
35 * 0 on Success else internal Truflow error
37 int tf_msg_session_open(struct tf *tfp,
39 uint8_t *fw_session_id,
40 uint8_t *fw_session_client_id,
41 struct tf_dev_info *dev);
44 * Sends session close request to Firmware
47 * Pointer to session handle
50 * PCI name of the control channel
53 * Pointer to the fw_session_id that is assigned to the session at
54 * time of session open
57 * 0 on Success else internal Truflow error
59 int tf_msg_session_attach(struct tf *tfp,
60 char *ctrl_channel_name,
61 uint8_t tf_fw_session_id);
64 * Sends session client register request to Firmware
67 * Pointer to session handle
70 * PCI name of the control channel
72 * [in/out] fw_session_client_id
73 * Pointer to the fw_session_client_id that is allocated on firmware
77 * 0 on Success else internal Truflow error
79 int tf_msg_session_client_register(struct tf *tfp,
80 struct tf_session *tfs,
81 char *ctrl_channel_name,
82 uint8_t *fw_session_client_id);
85 * Sends session client unregister request to Firmware
88 * Pointer to session handle
90 * [in/out] fw_session_client_id
91 * Pointer to the fw_session_client_id that is allocated on firmware
95 * 0 on Success else internal Truflow error
97 int tf_msg_session_client_unregister(struct tf *tfp,
98 struct tf_session *tfs,
99 uint8_t fw_session_client_id);
102 * Sends session close request to Firmware
105 * Pointer to session handle
108 * 0 on Success else internal Truflow error
110 int tf_msg_session_close(struct tf *tfp,
111 struct tf_session *tfs);
114 * Sends session query config request to TF Firmware
117 * Pointer to session handle
120 * 0 on Success else internal Truflow error
122 int tf_msg_session_qcfg(struct tf *tfp);
125 * Sends session HW resource query capability request to TF Firmware
128 * Pointer to TF handle
131 * Receive or Transmit direction
134 * Number of elements in the query. Should be set to the max
135 * elements for the device type
138 * Pointer to an array of query elements
140 * [out] resv_strategy
141 * Pointer to the reservation strategy
144 * 0 on Success else internal Truflow error
146 int tf_msg_session_resc_qcaps(struct tf *tfp,
147 struct tf_dev_info *dev,
150 struct tf_rm_resc_req_entry *query,
151 enum tf_rm_resc_resv_strategy *resv_strategy);
154 * Sends session HW resource allocation request to TF Firmware
157 * Pointer to TF handle
160 * Receive or Transmit direction
163 * Number of elements in the req and resv arrays
166 * Pointer to an array of request elements
169 * Pointer to an array of reserved elements
172 * 0 on Success else internal Truflow error
174 int tf_msg_session_resc_alloc(struct tf *tfp,
175 struct tf_dev_info *dev,
178 struct tf_rm_resc_req_entry *request,
179 struct tf_rm_resc_entry *resv);
182 * Sends session resource flush request to TF Firmware
185 * Pointer to TF handle
188 * Receive or Transmit direction
191 * Number of elements in the req and resv arrays
194 * Pointer to an array of reserved elements that needs to be flushed
197 * 0 on Success else internal Truflow error
199 int tf_msg_session_resc_flush(struct tf *tfp,
202 struct tf_rm_resc_entry *resv);
204 * Sends EM internal insert request to Firmware
207 * Pointer to TF handle
210 * Pointer to em insert parameter list
218 * [in] num_of_entries
219 * Number of entries to insert
222 * 0 on Success else internal Truflow error
224 int tf_msg_insert_em_internal_entry(struct tf *tfp,
225 struct tf_insert_em_entry_parms *params,
226 uint16_t *rptr_index,
228 uint8_t *num_of_entries);
230 * Sends EM hash internal insert request to Firmware
233 * Pointer to TF handle
236 * Pointer to em insert parameter list
242 * Lookup3 hash of key
250 * [in] num_of_entries
251 * Number of entries to insert
254 * 0 on Success else internal Truflow error
257 tf_msg_hash_insert_em_internal_entry(struct tf *tfp,
258 struct tf_insert_em_entry_parms *em_parms,
261 uint16_t *rptr_index,
263 uint8_t *num_of_entries);
265 * Sends EM internal delete request to Firmware
268 * Pointer to TF handle
271 * Pointer to em delete parameters
274 * 0 on Success else internal Truflow error
276 int tf_msg_delete_em_entry(struct tf *tfp,
277 struct tf_delete_em_entry_parms *em_parms);
280 * Sends Ext EM mem allocation request to Firmware
283 * Pointer to TF handle
286 * memory allocation details
298 * 0 on Success else internal Truflow error
300 int tf_msg_ext_em_ctxt_mem_alloc(struct tf *tfp,
301 struct hcapi_cfa_em_table *tbl,
304 uint32_t *page_size);
307 * Sends Ext EM mem allocation request to Firmware
310 * Pointer to TF handle
316 * Pointer to the PBL or PDL depending on number of levels
319 * PBL indirect levels
325 * 0 on Success else internal Truflow error
327 int tf_msg_ext_em_ctxt_mem_free(struct tf *tfp,
334 * Sends EM mem register request to Firmware
337 * Pointer to TF handle
346 * DMA Address for the memory page
352 * 0 on Success else internal Truflow error
354 int tf_msg_em_mem_rgtr(struct tf *tfp,
361 * Sends EM mem unregister request to Firmware
364 * Pointer to TF handle
370 * 0 on Success else internal Truflow error
372 int tf_msg_em_mem_unrgtr(struct tf *tfp,
376 * Sends EM qcaps request to Firmware
379 * Pointer to TF handle
382 * Receive or Transmit direction
385 * Pointer to EM capabilities
388 * 0 on Success else internal Truflow error
390 int tf_msg_em_qcaps(struct tf *tfp,
392 struct tf_em_caps *em_caps);
395 * Sends EM config request to Firmware
398 * Pointer to TF handle
401 * EM Table, key 0, number of entries to configure
404 * EM Table, Key 0 context id
407 * EM Table, Key 1 context id
410 * EM Table, Record context id
413 * EM Table, EFC Table context id
415 * [in] flush_interval
416 * Flush pending HW cached flows every 1/10th of value set in
417 * seconds, both idle and active flows are flushed from the HW
418 * cache. If set to 0, this feature will be disabled.
421 * Receive or Transmit direction
424 * 0 on Success else internal Truflow error
426 int tf_msg_em_cfg(struct tf *tfp,
427 uint32_t num_entries,
428 uint16_t key0_ctx_id,
429 uint16_t key1_ctx_id,
430 uint16_t record_ctx_id,
432 uint8_t flush_interval,
436 * Sends Ext EM config request to Firmware
439 * Pointer to TF handle
445 * Table scope parameters
450 * [in] flush_interval
451 * Flush pending HW cached flows every 1/10th of value set in
452 * seconds, both idle and active flows are flushed from the HW
453 * cache. If set to 0, this feature will be disabled.
456 * Receive or Transmit direction
459 * 0 on Success else internal Truflow error
461 int tf_msg_ext_em_cfg(struct tf *tfp,
462 struct tf_tbl_scope_cb *tbl_scope_cb,
464 uint8_t flush_interval,
468 * Sends EM operation request to Firmware
471 * Pointer to TF handle
474 * Receive or Transmit direction
480 * 0 on Success else internal Truflow error
482 int tf_msg_em_op(struct tf *tfp,
487 * Sends tcam entry 'set' to the Firmware.
490 * Pointer to session handle
493 * Pointer to set parameters
496 * 0 on Success else internal Truflow error
498 int tf_msg_tcam_entry_set(struct tf *tfp,
499 struct tf_dev_info *dev,
500 struct tf_tcam_set_parms *parms);
503 * Sends tcam entry 'get' to the Firmware.
506 * Pointer to session handle
509 * Pointer to get parameters
512 * 0 on Success else internal Truflow error
514 int tf_msg_tcam_entry_get(struct tf *tfp,
515 struct tf_dev_info *dev,
516 struct tf_tcam_get_parms *parms);
519 * Sends tcam entry 'free' to the Firmware.
522 * Pointer to session handle
525 * Pointer to free parameters
528 * 0 on Success else internal Truflow error
530 int tf_msg_tcam_entry_free(struct tf *tfp,
531 struct tf_dev_info *dev,
532 struct tf_tcam_free_parms *parms);
535 * Sends Set message of a Table Type element to the firmware.
538 * Pointer to session handle
541 * Direction location of the element to set
544 * Type of the object to set
547 * Size of the data to set
558 int tf_msg_set_tbl_entry(struct tf *tfp,
566 * Sends get message of a Table Type element to the firmware.
569 * Pointer to session handle
572 * Direction location of the element to get
575 * Type of the object to get
578 * Size of the data read
589 int tf_msg_get_tbl_entry(struct tf *tfp,
596 /* HWRM Tunneled messages */
599 * Sends global cfg read request to Firmware
602 * Pointer to TF handle
605 * Pointer to read parameters
608 * 0 on Success else internal Truflow error
610 int tf_msg_get_global_cfg(struct tf *tfp,
611 struct tf_global_cfg_parms *params);
614 * Sends global cfg update request to Firmware
617 * Pointer to TF handle
620 * Pointer to write parameters
623 * 0 on Success else internal Truflow error
625 int tf_msg_set_global_cfg(struct tf *tfp,
626 struct tf_global_cfg_parms *params);
629 * Sends bulk get message of a Table Type element to the firmware.
632 * Pointer to session handle
635 * Pointer to table get bulk parameters
638 * 0 on Success else internal Truflow error
640 int tf_msg_bulk_get_tbl_entry(struct tf *tfp,
643 uint32_t starting_idx,
644 uint16_t num_entries,
645 uint16_t entry_sz_in_bytes,
646 uint64_t physical_mem_addr);
649 * Sends Set message of a IF Table Type element to the firmware.
652 * Pointer to session handle
655 * Pointer to IF table set parameters
658 * 0 on Success else internal Truflow error
660 int tf_msg_set_if_tbl_entry(struct tf *tfp,
661 struct tf_if_tbl_set_parms *params);
664 * Sends get message of a IF Table Type element to the firmware.
667 * Pointer to session handle
670 * Pointer to IF table get parameters
673 * 0 on Success else internal Truflow error
675 int tf_msg_get_if_tbl_entry(struct tf *tfp,
676 struct tf_if_tbl_get_parms *params);
678 #endif /* _TF_MSG_H_ */