static uint32_t *msi_intr_vaddr;
void *(*rte_mcp_ptr_list);
+void *
+dpaa2_get_mcp_ptr(int portal_idx)
+{
+ if (rte_mcp_ptr_list)
+ return rte_mcp_ptr_list[portal_idx];
+ else
+ return NULL;
+}
+
static struct rte_dpaa2_object_list dpaa2_obj_list =
TAILQ_HEAD_INITIALIZER(dpaa2_obj_list);
struct fsl_mc_io dpmng = {0};
struct mc_version mc_ver_info = {0};
- rte_mcp_ptr_list = malloc(sizeof(void *) * 1);
+ rte_mcp_ptr_list = malloc(sizeof(void *) * (MC_PORTAL_INDEX + 1));
if (!rte_mcp_ptr_list) {
DPAA2_BUS_ERR("Unable to allocate MC portal memory");
ret = -ENOMEM;
* required.
*/
if (rte_eal_process_type() == RTE_PROC_SECONDARY) {
- rte_mcp_ptr_list[0] = (void *)v_addr;
+ rte_mcp_ptr_list[MC_PORTAL_INDEX] = (void *)v_addr;
return 0;
}
ret = -1;
goto cleanup;
}
- rte_mcp_ptr_list[0] = (void *)v_addr;
+ rte_mcp_ptr_list[MC_PORTAL_INDEX] = (void *)v_addr;
free(dev_name);
return 0;
}
/* Open the dpbp object */
- dpbp_node->dpbp.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX];
+ dpbp_node->dpbp.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX);
ret = dpbp_open(&dpbp_node->dpbp,
CMD_PRI_LOW, dpbp_id, &dpbp_node->token);
if (ret) {
}
/* Open the dpci object */
- dpci_node->dpci.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX];
+ dpci_node->dpci.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX);
ret = dpci_open(&dpci_node->dpci,
CMD_PRI_LOW, dpci_id, &dpci_node->token);
if (ret) {
dpio_dev->hw_id = object_id;
rte_atomic16_init(&dpio_dev->ref_count);
/* Using single portal for all devices */
- dpio_dev->mc_portal = rte_mcp_ptr_list[MC_PORTAL_INDEX];
+ dpio_dev->mc_portal = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX);
if (!check_lcore_cpuset) {
check_lcore_cpuset = 1;
uint8_t channel_index;
};
-/*! Global MCP list */
-extern void *(*rte_mcp_ptr_list);
-
/* Refer to Table 7-3 in SEC BG */
struct qbman_fle {
uint32_t addr_lo;
__rte_internal
void rte_dpaa2_free_dpci_dev(struct dpaa2_dpci_dev *dpci);
+/* Global MCP pointer */
+__rte_internal
+void *dpaa2_get_mcp_ptr(int portal_idx);
+
#endif
dpaa2_free_dpbp_dev;
dpaa2_free_dq_storage;
dpaa2_free_eq_descriptors;
+ dpaa2_get_mcp_ptr;
dpaa2_io_portal;
dpaa2_svr_family;
dpaa2_virt_mode;
rte_fslmc_get_device_count;
rte_fslmc_object_register;
rte_global_active_dqs_list;
- rte_mcp_ptr_list;
};
"Error in allocating the memory for dpsec object");
return -ENOMEM;
}
- dpseci->regs = rte_mcp_ptr_list[0];
+ dpseci->regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX);
retcode = dpseci_open(dpseci, CMD_PRI_LOW, hw_id, &token);
if (retcode != 0) {
}
/* Open the dpcon object */
- dpcon_node->dpcon.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX];
+ dpcon_node->dpcon.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX);
ret = dpcon_open(&dpcon_node->dpcon,
CMD_PRI_LOW, dpcon_id, &dpcon_node->token);
if (ret) {
DPAA2_PMD_ERR("Memory allocation failed for dpni device");
return -1;
}
- dpni_dev->regs = rte_mcp_ptr_list[0];
+ dpni_dev->regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX);
eth_dev->process_private = (void *)dpni_dev;
/* For secondary processes, the primary has done all the work */
}
/* Open the dpdmux object */
- dpdmux_dev->dpdmux.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX];
+ dpdmux_dev->dpdmux.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX);
ret = dpdmux_open(&dpdmux_dev->dpdmux, CMD_PRI_LOW, dpdmux_id,
&dpdmux_dev->token);
if (ret) {
}
/* Open the dprtc object */
- dprtc_dev->dprtc.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX];
+ dprtc_dev->dprtc.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX);
ret = dprtc_open(&dprtc_dev->dprtc, CMD_PRI_LOW, dprtc_id,
&dprtc_dev->token);
if (ret) {
/* Open DPDMAI device */
dpdmai_dev->dpdmai_id = dpdmai_id;
- dpdmai_dev->dpdmai.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX];
+ dpdmai_dev->dpdmai.regs = dpaa2_get_mcp_ptr(MC_PORTAL_INDEX);
ret = dpdmai_open(&dpdmai_dev->dpdmai, CMD_PRI_LOW,
dpdmai_dev->dpdmai_id, &dpdmai_dev->token);
if (ret) {