1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2019-2021 Broadcom
6 #include <rte_common.h>
21 struct tf_if_tbl_cfg *if_tbl_cfg_db[TF_DIR_MAX];
25 * Init flag, set on bind and cleared on unbind
26 * TODO: Store this data in session db
31 * Convert if_tbl_type to hwrm type.
34 * Interface table type
37 * HWRM device data type
41 * -EOPNOTSUPP - Type not supported
44 tf_if_tbl_get_hcapi_type(struct tf_if_tbl_get_hcapi_parms *parms)
46 struct tf_if_tbl_cfg *tbl_cfg;
47 enum tf_if_tbl_cfg_type cfg_type;
49 tbl_cfg = (struct tf_if_tbl_cfg *)parms->tbl_db;
50 cfg_type = tbl_cfg[parms->db_index].cfg_type;
52 if (cfg_type != TF_IF_TBL_CFG)
55 *parms->hcapi_type = tbl_cfg[parms->db_index].hcapi_type;
61 tf_if_tbl_bind(struct tf *tfp,
62 struct tf_if_tbl_cfg_parms *parms)
64 struct tfp_calloc_parms cparms;
65 struct tf_if_tbl_db *if_tbl_db;
67 TF_CHECK_PARMS2(tfp, parms);
70 cparms.size = sizeof(struct tf_if_tbl_db);
72 if (tfp_calloc(&cparms) != 0) {
73 TFP_DRV_LOG(ERR, "if_tbl_rm_db alloc error %s\n",
78 if_tbl_db = cparms.mem_va;
79 if_tbl_db->if_tbl_cfg_db[TF_DIR_RX] = parms->cfg;
80 if_tbl_db->if_tbl_cfg_db[TF_DIR_TX] = parms->cfg;
81 tf_session_set_if_tbl_db(tfp, (void *)if_tbl_db);
86 "Table Type - initialized\n");
92 tf_if_tbl_unbind(struct tf *tfp)
95 struct tf_if_tbl_db *if_tbl_db_ptr;
97 /* Bail if nothing has been initialized */
100 "No Table DBs created\n");
104 TF_CHECK_PARMS1(tfp);
106 rc = tf_session_get_if_tbl_db(tfp, (void **)&if_tbl_db_ptr);
108 TFP_DRV_LOG(INFO, "No IF Table DBs initialized\n");
112 tfp_free((void *)if_tbl_db_ptr);
119 tf_if_tbl_set(struct tf *tfp,
120 struct tf_if_tbl_set_parms *parms)
123 struct tf_if_tbl_db *if_tbl_db_ptr;
124 struct tf_if_tbl_get_hcapi_parms hparms;
126 TF_CHECK_PARMS3(tfp, parms, parms->data);
130 "%s: No Table DBs created\n",
131 tf_dir_2_str(parms->dir));
135 rc = tf_session_get_if_tbl_db(tfp, (void **)&if_tbl_db_ptr);
137 TFP_DRV_LOG(INFO, "No IF Table DBs initialized\n");
141 /* Convert TF type to HCAPI type */
142 hparms.tbl_db = if_tbl_db_ptr->if_tbl_cfg_db[parms->dir];
143 hparms.db_index = parms->type;
144 hparms.hcapi_type = &parms->hcapi_type;
145 rc = tf_if_tbl_get_hcapi_type(&hparms);
149 rc = tf_msg_set_if_tbl_entry(tfp, parms);
152 "%s, If Tbl set failed, type:%d, rc:%s\n",
153 tf_dir_2_str(parms->dir),
162 tf_if_tbl_get(struct tf *tfp,
163 struct tf_if_tbl_get_parms *parms)
166 struct tf_if_tbl_db *if_tbl_db_ptr;
167 struct tf_if_tbl_get_hcapi_parms hparms;
169 TF_CHECK_PARMS3(tfp, parms, parms->data);
173 "%s: No Table DBs created\n",
174 tf_dir_2_str(parms->dir));
178 rc = tf_session_get_if_tbl_db(tfp, (void **)&if_tbl_db_ptr);
180 TFP_DRV_LOG(INFO, "No IF Table DBs initialized\n");
184 /* Convert TF type to HCAPI type */
185 hparms.tbl_db = if_tbl_db_ptr->if_tbl_cfg_db[parms->dir];
186 hparms.db_index = parms->type;
187 hparms.hcapi_type = &parms->hcapi_type;
188 rc = tf_if_tbl_get_hcapi_type(&hparms);
193 rc = tf_msg_get_if_tbl_entry(tfp, parms);
196 "%s, If Tbl get failed, type:%d, rc:%s\n",
197 tf_dir_2_str(parms->dir),