1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2021 Marvell.
5 #include <rte_mempool.h>
8 #include "cnxk_mempool.h"
11 cn10k_mempool_alloc(struct rte_mempool *mp)
16 block_size = mp->elt_size + mp->header_size + mp->trailer_size;
17 /* Align header size to ROC_ALIGN */
18 if (mp->header_size % ROC_ALIGN != 0) {
19 padding = RTE_ALIGN_CEIL(mp->header_size, ROC_ALIGN) -
21 mp->header_size += padding;
22 block_size += padding;
25 /* Align block size to ROC_ALIGN */
26 if (block_size % ROC_ALIGN != 0) {
27 padding = RTE_ALIGN_CEIL(block_size, ROC_ALIGN) - block_size;
28 mp->trailer_size += padding;
29 block_size += padding;
32 return cnxk_mempool_alloc(mp);
36 cn10k_mempool_free(struct rte_mempool *mp)
38 cnxk_mempool_free(mp);
41 static struct rte_mempool_ops cn10k_mempool_ops = {
42 .name = "cn10k_mempool_ops",
43 .alloc = cn10k_mempool_alloc,
44 .free = cn10k_mempool_free,
45 .enqueue = cnxk_mempool_enq,
46 .dequeue = cnxk_mempool_deq,
47 .get_count = cnxk_mempool_get_count,
48 .calc_mem_size = cnxk_mempool_calc_mem_size,
49 .populate = cnxk_mempool_populate,
52 MEMPOOL_REGISTER_OPS(cn10k_mempool_ops);