Branch data Line data Source code
1 : : /* SPDX-License-Identifier: BSD-3-Clause 2 : : * Copyright(C) 2025 Marvell. 3 : : */ 4 : : 5 : : #include "cnxk_mempool.h" 6 : : 7 : : static int 8 : 0 : cn20k_mempool_alloc(struct rte_mempool *mp) 9 : : { 10 : : uint32_t block_size; 11 : : int halo_ena, rc; 12 : : size_t padding; 13 : : 14 : 0 : block_size = mp->elt_size + mp->header_size + mp->trailer_size; 15 : : /* Align header size to ROC_ALIGN */ 16 [ # # ]: 0 : if (mp->header_size % ROC_ALIGN != 0) { 17 : 0 : padding = RTE_ALIGN_CEIL(mp->header_size, ROC_ALIGN) - 18 : : mp->header_size; 19 : 0 : mp->header_size += padding; 20 : 0 : block_size += padding; 21 : : } 22 : : 23 : : /* Align block size to ROC_ALIGN */ 24 [ # # ]: 0 : if (block_size % ROC_ALIGN != 0) { 25 : 0 : padding = RTE_ALIGN_CEIL(block_size, ROC_ALIGN) - block_size; 26 : 0 : mp->trailer_size += padding; 27 : : block_size += padding; 28 : : } 29 : : 30 : : /* Get halo status */ 31 : 0 : halo_ena = roc_idev_npa_halo_ena_get(); 32 : : 33 [ # # ]: 0 : rc = cnxk_mempool_alloc(mp, halo_ena ? ROC_NPA_HALO_F : 0); 34 [ # # ]: 0 : if (rc) 35 : : return rc; 36 : : 37 : 0 : rc = batch_op_init(mp); 38 [ # # ]: 0 : if (rc) { 39 : 0 : plt_err("Failed to init batch alloc mem rc=%d", rc); 40 : 0 : goto error; 41 : : } 42 : : 43 : : return 0; 44 : : error: 45 : 0 : cnxk_mempool_free(mp); 46 : 0 : return rc; 47 : : } 48 : : 49 : : static struct rte_mempool_ops cn20k_mempool_ops = { 50 : : .name = "cn20k_mempool_ops", 51 : : .alloc = cn20k_mempool_alloc, 52 : : .free = cn10k_mempool_free, 53 : : .enqueue = cn10k_mempool_enq, 54 : : .dequeue = cn10k_mempool_deq, 55 : : .get_count = cn10k_mempool_get_count, 56 : : .calc_mem_size = cnxk_mempool_calc_mem_size, 57 : : .populate = cnxk_mempool_populate, 58 : : }; 59 : : 60 : 276 : RTE_MEMPOOL_REGISTER_OPS(cn20k_mempool_ops);