New upstream version 17.11.3
[deb_dpdk.git] / drivers / net / qede / base / bcm_osal.c
index fe42f32..2b9a523 100644 (file)
@@ -133,7 +133,7 @@ void *osal_dma_alloc_coherent(struct ecore_dev *p_dev,
        snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
                                        (unsigned long)rte_get_timer_cycles());
        if (core_id == (unsigned int)LCORE_ID_ANY)
-               core_id = 0;
+               core_id = rte_get_master_lcore();
        socket_id = rte_lcore_to_socket_id(core_id);
        mz = rte_memzone_reserve_aligned(mz_name, size,
                                         socket_id, 0, RTE_CACHE_LINE_SIZE);
@@ -172,7 +172,7 @@ void *osal_dma_alloc_coherent_aligned(struct ecore_dev *p_dev,
        snprintf(mz_name, sizeof(mz_name) - 1, "%lx",
                                        (unsigned long)rte_get_timer_cycles());
        if (core_id == (unsigned int)LCORE_ID_ANY)
-               core_id = 0;
+               core_id = rte_get_master_lcore();
        socket_id = rte_lcore_to_socket_id(core_id);
        mz = rte_memzone_reserve_aligned(mz_name, size, socket_id, 0, align);
        if (!mz) {
@@ -200,6 +200,11 @@ void osal_dma_free_mem(struct ecore_dev *p_dev, dma_addr_t phys)
                        DP_VERBOSE(p_dev, ECORE_MSG_SP,
                                "Free memzone %s\n", ecore_mz_mapping[j]->name);
                        rte_memzone_free(ecore_mz_mapping[j]);
+                       while (j < ecore_mz_count - 1) {
+                               ecore_mz_mapping[j] = ecore_mz_mapping[j + 1];
+                               j++;
+                       }
+                       ecore_mz_count--;
                        return;
                }
        }