Hi Savinay,
> +static int > +testsuite_setup(void) > +{ > + struct rte_mbuf *mbuf[NUM_MBUF]; > + int ret, i; > + > + mbuf_pool = rte_pktmbuf_pool_create("IPSEC_PERF_MBUFPOOL", > + NUM_MBUFS, MBUF_CACHE_SIZE, 0, MBUF_SIZE, > + rte_socket_id()); > + if (mbuf_pool == NULL) { > + RTE_LOG(ERR, USER1, "Can't create MBUFPOOL\n"); > + return TEST_FAILED; > + } > + > + cop_pool = rte_crypto_op_pool_create( > + "MBUF_CRYPTO_SYM_OP_POOL", > + RTE_CRYPTO_OP_TYPE_SYMMETRIC, > + NUM_MBUFS, MBUF_CACHE_SIZE, > + DEFAULT_NUM_XFORMS * > + sizeof(struct rte_crypto_sym_xform) + > + MAXIMUM_IV_LENGTH, > + rte_socket_id()); > + if (cop_pool == NULL) { > + RTE_LOG(ERR, USER1, "Can't create CRYPTO_OP_POOL\n"); > + return TEST_FAILED; > + } > + > + ring_inb_prepare = rte_ring_create("ring0", RING_SIZE, > + SOCKET_ID_ANY, 0); > + if (ring_inb_prepare == NULL) > + return TEST_FAILED; > + > + ring_inb_process = rte_ring_create("ring1", RING_SIZE, > + SOCKET_ID_ANY, 0); > + if (ring_inb_process == NULL) > + return TEST_FAILED; > + > + ring_outb_prepare = rte_ring_create("ring2", RING_SIZE, > + SOCKET_ID_ANY, 0); > + if (ring_outb_prepare == NULL) > + return TEST_FAILED; > + > + ring_outb_process = rte_ring_create("ring3", RING_SIZE, > + SOCKET_ID_ANY, 0); > + if (ring_outb_process == NULL) > + return TEST_FAILED; > + > + for (i = 0; i < NUM_MBUF; i++) > + mbuf[i] = generate_mbuf_data(mbuf_pool); > + I think enqueue below could be moved to the loop above, so don't need to allocate mbuf[NUM_MBUF] at stack. struct rte_mbuf *mbuf; ... for (i = 0; i < NUM_MBUF; i++) { mbuf = generate_mbuf_data(mbuf_pool); if (mbuf == NULL && rte_ring_sp_enqueue_bulk(ring_inb_prepare, (void **)mbuf, 1) == 0) break; } If (i != NUM_BUF) return TEST_FAILED; > + ret = rte_ring_sp_enqueue_bulk(ring_inb_prepare, (void **)mbuf, > + NUM_MBUF, NULL); > + if (ret == 0) > + return TEST_FAILED; > + > + return TEST_SUCCESS; > +} > +