- max_fifo =
- clib_min ((fsh_n_free_bytes (fsh) - 4096) / 2, FIFO_SEGMENT_MAX_FIFO_SIZE);
- fsh->max_log2_chunk_size = max_log2 (max_fifo);
-
- fsh->slices = fsh_alloc (fsh, sizeof (*fss) * fs->n_slices);
- memset (fsh->slices, 0, sizeof (*fss) * fs->n_slices);
- max_chunk_sz = fsh->max_log2_chunk_size - FIFO_SEGMENT_MIN_LOG2_FIFO_SIZE;
- max_chunk_sz += 1;
-
- for (i = 0; i < fs->n_slices; i++)
- {
- fss = fsh_slice_get (fsh, i);
- vec_sz = max_chunk_sz * sizeof (*fss->free_chunks);
- fss->free_chunks = fsh_alloc (fsh, vec_sz);
- memset (fss->free_chunks, 0, vec_sz);
- vec_sz = max_chunk_sz * sizeof (*fss->num_chunks);
- fss->num_chunks = fsh_alloc (fsh, vec_sz);
- memset (fss->num_chunks, 0, vec_sz);
-
- fss->chunk_lock = 0;
- fss->n_chunk_lens = max_chunk_sz;
- }
-
+ max_fifo = clib_min ((seg_sz - slices_sz) / 2, FIFO_SEGMENT_MAX_FIFO_SIZE);
+ fsh->max_log2_fifo_size = min_log2 (max_fifo);