Lines Matching refs:pool

70 	struct mlxsw_sp_counter_pool *pool;  in mlxsw_sp_counter_pool_init()  local
87 pool = kzalloc(sizeof(*pool), GFP_KERNEL); in mlxsw_sp_counter_pool_init()
88 if (!pool) in mlxsw_sp_counter_pool_init()
91 pool->pool_size = MLXSW_CORE_RES_GET(mlxsw_sp->core, COUNTER_POOL_SIZE); in mlxsw_sp_counter_pool_init()
92 map_size = BITS_TO_LONGS(pool->pool_size) * sizeof(unsigned long); in mlxsw_sp_counter_pool_init()
94 pool->usage = kzalloc(map_size, GFP_KERNEL); in mlxsw_sp_counter_pool_init()
95 if (!pool->usage) { in mlxsw_sp_counter_pool_init()
100 pool->sub_pools = mlxsw_sp_counter_sub_pools; in mlxsw_sp_counter_pool_init()
106 sub_pool = &pool->sub_pools[i]; in mlxsw_sp_counter_pool_init()
112 if (sub_pool->base_index + sub_pool->size > pool->pool_size) in mlxsw_sp_counter_pool_init()
113 sub_pool->size = pool->pool_size - sub_pool->base_index; in mlxsw_sp_counter_pool_init()
116 mlxsw_sp->counter_pool = pool; in mlxsw_sp_counter_pool_init()
120 kfree(pool); in mlxsw_sp_counter_pool_init()
126 struct mlxsw_sp_counter_pool *pool = mlxsw_sp->counter_pool; in mlxsw_sp_counter_pool_fini() local
128 WARN_ON(find_first_bit(pool->usage, pool->pool_size) != in mlxsw_sp_counter_pool_fini()
129 pool->pool_size); in mlxsw_sp_counter_pool_fini()
130 kfree(pool->usage); in mlxsw_sp_counter_pool_fini()
131 kfree(pool); in mlxsw_sp_counter_pool_fini()
138 struct mlxsw_sp_counter_pool *pool = mlxsw_sp->counter_pool; in mlxsw_sp_counter_alloc() local
148 entry_index = find_next_zero_bit(pool->usage, stop_index, entry_index); in mlxsw_sp_counter_alloc()
157 __set_bit(entry_index + i, pool->usage); in mlxsw_sp_counter_alloc()
167 struct mlxsw_sp_counter_pool *pool = mlxsw_sp->counter_pool; in mlxsw_sp_counter_free() local
171 if (WARN_ON(counter_index >= pool->pool_size)) in mlxsw_sp_counter_free()
175 __clear_bit(counter_index + i, pool->usage); in mlxsw_sp_counter_free()