1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2019-2021 Broadcom
6 #include <rte_common.h>
19 * TODO: Store this data in session db
21 static void *if_tbl_db[TF_DIR_MAX];
24 * Init flag, set on bind and cleared on unbind
25 * TODO: Store this data in session db
30 * Convert if_tbl_type to hwrm type.
33 * Interface table type
36 * HWRM device data type
40 * -EOPNOTSUPP - Type not supported
43 tf_if_tbl_get_hcapi_type(struct tf_if_tbl_get_hcapi_parms *parms)
45 struct tf_if_tbl_cfg *tbl_cfg;
46 enum tf_if_tbl_cfg_type cfg_type;
48 tbl_cfg = (struct tf_if_tbl_cfg *)parms->tbl_db;
49 cfg_type = tbl_cfg[parms->db_index].cfg_type;
51 if (cfg_type != TF_IF_TBL_CFG)
54 *parms->hcapi_type = tbl_cfg[parms->db_index].hcapi_type;
60 tf_if_tbl_bind(struct tf *tfp __rte_unused,
61 struct tf_if_tbl_cfg_parms *parms)
63 TF_CHECK_PARMS2(tfp, parms);
65 if_tbl_db[TF_DIR_RX] = parms->cfg;
66 if_tbl_db[TF_DIR_TX] = parms->cfg;
71 "Table Type - initialized\n");
77 tf_if_tbl_unbind(struct tf *tfp __rte_unused)
79 /* Bail if nothing has been initialized */
82 "No Table DBs created\n");
86 if_tbl_db[TF_DIR_RX] = NULL;
87 if_tbl_db[TF_DIR_TX] = NULL;
94 tf_if_tbl_set(struct tf *tfp,
95 struct tf_if_tbl_set_parms *parms)
98 struct tf_if_tbl_get_hcapi_parms hparms;
100 TF_CHECK_PARMS3(tfp, parms, parms->data);
104 "%s: No Table DBs created\n",
105 tf_dir_2_str(parms->dir));
109 /* Convert TF type to HCAPI type */
110 hparms.tbl_db = if_tbl_db[parms->dir];
111 hparms.db_index = parms->type;
112 hparms.hcapi_type = &parms->hcapi_type;
113 rc = tf_if_tbl_get_hcapi_type(&hparms);
117 rc = tf_msg_set_if_tbl_entry(tfp, parms);
120 "%s, If Tbl set failed, type:%d, rc:%s\n",
121 tf_dir_2_str(parms->dir),
130 tf_if_tbl_get(struct tf *tfp,
131 struct tf_if_tbl_get_parms *parms)
134 struct tf_if_tbl_get_hcapi_parms hparms;
136 TF_CHECK_PARMS3(tfp, parms, parms->data);
140 "%s: No Table DBs created\n",
141 tf_dir_2_str(parms->dir));
145 /* Convert TF type to HCAPI type */
146 hparms.tbl_db = if_tbl_db[parms->dir];
147 hparms.db_index = parms->type;
148 hparms.hcapi_type = &parms->hcapi_type;
149 rc = tf_if_tbl_get_hcapi_type(&hparms);
154 rc = tf_msg_get_if_tbl_entry(tfp, parms);
157 "%s, If Tbl get failed, type:%d, rc:%s\n",
158 tf_dir_2_str(parms->dir),