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>
14 #include "tf_rm_new.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);
41 * Sends session close request to Firmware
44 * Pointer to session handle
47 * Pointer to the fw_session_id that is assigned to the session at
48 * time of session open
51 * 0 on Success else internal Truflow error
53 int tf_msg_session_attach(struct tf *tfp,
54 char *ctrl_channel_name,
55 uint8_t tf_fw_session_id);
58 * Sends session close request to Firmware
61 * Pointer to session handle
64 * 0 on Success else internal Truflow error
66 int tf_msg_session_close(struct tf *tfp);
69 * Sends session query config request to TF Firmware
72 * Pointer to session handle
75 * 0 on Success else internal Truflow error
77 int tf_msg_session_qcfg(struct tf *tfp);
80 * Sends session HW resource query capability request to TF Firmware
83 * Pointer to TF handle
86 * Receive or Transmit direction
89 * Number of elements in the query. Should be set to the max
90 * elements for the device type
93 * Pointer to an array of query elements
96 * Pointer to the reservation strategy
99 * 0 on Success else internal Truflow error
101 int tf_msg_session_resc_qcaps(struct tf *tfp,
104 struct tf_rm_resc_req_entry *query,
105 enum tf_rm_resc_resv_strategy *resv_strategy);
108 * Sends session HW resource allocation request to TF Firmware
111 * Pointer to TF handle
114 * Receive or Transmit direction
117 * Number of elements in the req and resv arrays
120 * Pointer to an array of request elements
123 * Pointer to an array of reserved elements
126 * 0 on Success else internal Truflow error
128 int tf_msg_session_resc_alloc(struct tf *tfp,
131 struct tf_rm_resc_req_entry *request,
132 struct tf_rm_resc_entry *resv);
135 * Sends session resource flush request to TF Firmware
138 * Pointer to TF handle
141 * Receive or Transmit direction
144 * Number of elements in the req and resv arrays
147 * Pointer to an array of reserved elements that needs to be flushed
150 * 0 on Success else internal Truflow error
152 int tf_msg_session_resc_flush(struct tf *tfp,
155 struct tf_rm_resc_entry *resv);
157 * Sends EM internal insert request to Firmware
160 * Pointer to TF handle
163 * Pointer to em insert parameter list
171 * [in] num_of_entries
172 * Number of entries to insert
175 * 0 on Success else internal Truflow error
177 int tf_msg_insert_em_internal_entry(struct tf *tfp,
178 struct tf_insert_em_entry_parms *params,
179 uint16_t *rptr_index,
181 uint8_t *num_of_entries);
183 * Sends EM internal delete request to Firmware
186 * Pointer to TF handle
189 * Pointer to em delete parameters
192 * 0 on Success else internal Truflow error
194 int tf_msg_delete_em_entry(struct tf *tfp,
195 struct tf_delete_em_entry_parms *em_parms);
198 * Sends EM mem register request to Firmware
201 * Pointer to TF handle
210 * DMA Address for the memory page
216 * 0 on Success else internal Truflow error
218 int tf_msg_em_mem_rgtr(struct tf *tfp,
225 * Sends EM mem unregister request to Firmware
228 * Pointer to TF handle
234 * 0 on Success else internal Truflow error
236 int tf_msg_em_mem_unrgtr(struct tf *tfp,
240 * Sends EM qcaps request to Firmware
243 * Pointer to TF handle
246 * Receive or Transmit direction
249 * Pointer to EM capabilities
252 * 0 on Success else internal Truflow error
254 int tf_msg_em_qcaps(struct tf *tfp,
256 struct tf_em_caps *em_caps);
259 * Sends EM config request to Firmware
262 * Pointer to TF handle
265 * EM Table, key 0, number of entries to configure
268 * EM Table, Key 0 context id
271 * EM Table, Key 1 context id
274 * EM Table, Record context id
277 * EM Table, EFC Table context id
279 * [in] flush_interval
280 * Flush pending HW cached flows every 1/10th of value set in
281 * seconds, both idle and active flows are flushed from the HW
282 * cache. If set to 0, this feature will be disabled.
285 * Receive or Transmit direction
288 * 0 on Success else internal Truflow error
290 int tf_msg_em_cfg(struct tf *tfp,
291 uint32_t num_entries,
292 uint16_t key0_ctx_id,
293 uint16_t key1_ctx_id,
294 uint16_t record_ctx_id,
296 uint8_t flush_interval,
300 * Sends EM operation request to Firmware
303 * Pointer to TF handle
306 * Receive or Transmit direction
312 * 0 on Success else internal Truflow error
314 int tf_msg_em_op(struct tf *tfp,
319 * Sends tcam entry 'set' to the Firmware.
322 * Pointer to session handle
325 * Pointer to set parameters
328 * 0 on Success else internal Truflow error
330 int tf_msg_tcam_entry_set(struct tf *tfp,
331 struct tf_tcam_set_parms *parms);
334 * Sends tcam entry 'free' to the Firmware.
337 * Pointer to session handle
340 * Pointer to free parameters
343 * 0 on Success else internal Truflow error
345 int tf_msg_tcam_entry_free(struct tf *tfp,
346 struct tf_tcam_free_parms *parms);
349 * Sends Set message of a Table Type element to the firmware.
352 * Pointer to session handle
355 * Direction location of the element to set
358 * Type of the object to set
361 * Size of the data to set
372 int tf_msg_set_tbl_entry(struct tf *tfp,
380 * Sends get message of a Table Type element to the firmware.
383 * Pointer to session handle
386 * Direction location of the element to get
389 * Type of the object to get
392 * Size of the data read
403 int tf_msg_get_tbl_entry(struct tf *tfp,
410 /* HWRM Tunneled messages */
413 * Sends bulk get message of a Table Type element to the firmware.
416 * Pointer to session handle
419 * Pointer to table get bulk parameters
422 * 0 on Success else internal Truflow error
424 int tf_msg_bulk_get_tbl_entry(struct tf *tfp,
425 struct tf_bulk_get_tbl_entry_parms *parms);
427 #endif /* _TF_MSG_H_ */