Hi Anoob, Few minor comments, Please see inline. Apart from that, Acked-by: Akhil Goyal <gak...@marvell.com> > Update title as Test/crypto: add lookaside IPsec cases.
> +static int > +security_proto_supported(enum rte_security_session_action_type action, > + enum rte_security_session_protocol proto); > + > +static int > +dev_configure_and_start(uint64_t ff_disable); > + Do we really need to forward declare? > static struct rte_mbuf * > setup_test_string(struct rte_mempool *mpool, > const char *string, size_t len, uint8_t blocksize) > @@ -753,6 +763,43 @@ crypto_gen_testsuite_setup(void) > > #ifdef RTE_LIB_SECURITY > static int > +ipsec_proto_testsuite_setup(void) > +{ > + struct crypto_testsuite_params *ts_params = &testsuite_params; > + struct crypto_unittest_params *ut_params = &unittest_params; > + struct rte_cryptodev_info dev_info; > + int ret = 0; > + > + rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); > + > + if (!(dev_info.feature_flags & RTE_CRYPTODEV_FF_SECURITY)) { > + RTE_LOG(INFO, USER1, "Feature flag requirements for IPsec > Proto " > + "testsuite not met\n"); > + return TEST_SKIPPED; > + } > + > + /* Reconfigure to enable security */ Update comment like /*Reconfigure to enable security and disable crypto */ BTW, shouldn't this be dev_configure_and_start(0) Why is sym and asym disabled here? > + dev_configure_and_start(RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO > | > + RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO); Return value not taken care here. > + > + /* Set action type */ > + ut_params->type = > RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL; > + > + if (security_proto_supported( > + > RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL, > + RTE_SECURITY_PROTOCOL_IPSEC) < 0) { > + RTE_LOG(INFO, USER1, "Capability requirements for IPsec > Proto " > + "test not met\n"); > + ret = TEST_SKIPPED; > + } > + > + /* Stop the device */ > + rte_cryptodev_stop(ts_params->valid_devs[0]); Add a comment that the device will be started again in ut_setup_security() > + > + ret = test_ipsec_post_process(ut_params->ibuf, &td[i], > + res_d_tmp, silent); > + if (ret != TEST_SUCCESS) > + goto crypto_op_free; > + > + rte_crypto_op_free(ut_params->op); > + ut_params->op = NULL; > + > + rte_pktmbuf_free(ut_params->ibuf); > + ut_params->ibuf = NULL; > + } > + > +crypto_op_free: > + rte_crypto_op_free(ut_params->op); > + ut_params->op = NULL; > + > + rte_pktmbuf_free(ut_params->ibuf); > + ut_params->ibuf = NULL; > + Above four lines are getting executed again in the success cases.