MCPcopy Create free account
hub / github.com/F-Stack/f-stack / mlx5_ipool_flush_cache

Function mlx5_ipool_flush_cache

dpdk/drivers/net/mlx5/mlx5_utils.c:727–769  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

725}
726
727void
728mlx5_ipool_flush_cache(struct mlx5_indexed_pool *pool)
729{
730 uint32_t i, j;
731 struct mlx5_indexed_cache *gc;
732 struct rte_bitmap *ibmp;
733 uint32_t bmp_num, mem_size;
734
735 if (!pool->cfg.per_core_cache)
736 return;
737 gc = pool->gc;
738 if (!gc)
739 return;
740 /* Reset bmp. */
741 bmp_num = mlx5_trunk_idx_offset_get(pool, gc->n_trunk_valid);
742 mem_size = rte_bitmap_get_memory_footprint(bmp_num);
743 pool->bmp_mem = pool->cfg.malloc(MLX5_MEM_ZERO, mem_size,
744 RTE_CACHE_LINE_SIZE, rte_socket_id());
745 if (!pool->bmp_mem) {
746 DRV_LOG(ERR, "Ipool bitmap mem allocate failed.\n");
747 return;
748 }
749 ibmp = rte_bitmap_init_with_all_set(bmp_num, pool->bmp_mem, mem_size);
750 if (!ibmp) {
751 pool->cfg.free(pool->bmp_mem);
752 pool->bmp_mem = NULL;
753 DRV_LOG(ERR, "Ipool bitmap create failed.\n");
754 return;
755 }
756 pool->ibmp = ibmp;
757 /* Clear global cache. */
758 for (i = 0; i < gc->len; i++)
759 rte_bitmap_clear(ibmp, gc->idx[i] - 1);
760 /* Clear core cache. */
761 for (i = 0; i < RTE_MAX_LCORE + 1; i++) {
762 struct mlx5_ipool_per_lcore *ilc = pool->cache[i];
763
764 if (!ilc)
765 continue;
766 for (j = 0; j < ilc->len; j++)
767 rte_bitmap_clear(ibmp, ilc->idx[j] - 1);
768 }
769}
770
771static void *
772mlx5_ipool_get_next_cache(struct mlx5_indexed_pool *pool, uint32_t *pos)

Callers 1

flow_hw_table_destroyFunction · 0.85

Calls 5

rte_socket_idFunction · 0.85
rte_bitmap_clearFunction · 0.85

Tested by

no test coverage detected