> diff --git a/app/test/meson.build b/app/test/meson.build > index 52d9088578..0f658aa2ab 100644 > --- a/app/test/meson.build > +++ b/app/test/meson.build > @@ -96,6 +96,7 @@ test_sources = files( > 'test_meter.c', > 'test_mcslock.c', > 'test_mp_secondary.c', > + 'test_pdcp.c', > 'test_per_lcore.c', > 'test_pflock.c', > 'test_pmd_perf.c', > diff --git a/app/test/test_cryptodev.h b/app/test/test_cryptodev.h > index abd795f54a..89057dba22 100644 > --- a/app/test/test_cryptodev.h > +++ b/app/test/test_cryptodev.h > @@ -4,6 +4,9 @@ > #ifndef TEST_CRYPTODEV_H_ > #define TEST_CRYPTODEV_H_ > > +#include <rte_crypto.h> > +#include <rte_cryptodev.h> > +
Can we remove these includes from here and add in test_pdcp.c directly? > + if (conf->is_integrity_protected) { > + if (conf->entity.pdcp_xfrm.pkt_dir == > RTE_SECURITY_PDCP_UPLINK) { > + conf->entity.crypto_xfrm = &conf->a_xfrm; > + > + a_xfrm.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE; > + a_xfrm.next = &conf->c_xfrm; > + > + c_xfrm.cipher.op = > RTE_CRYPTO_CIPHER_OP_ENCRYPT; > + c_xfrm.next = NULL; > + } else { > + conf->entity.crypto_xfrm = &conf->c_xfrm; > + > + c_xfrm.cipher.op = > RTE_CRYPTO_CIPHER_OP_DECRYPT; > + c_xfrm.next = &conf->a_xfrm; > + > + a_xfrm.auth.op = RTE_CRYPTO_AUTH_OP_VERIFY; > + a_xfrm.next = NULL; > + } > + } else { > + conf->entity.crypto_xfrm = &conf->c_xfrm; > + c_xfrm.next = NULL; > + > + if (conf->entity.pdcp_xfrm.pkt_dir == > RTE_SECURITY_PDCP_UPLINK) > + c_xfrm.cipher.op = > RTE_CRYPTO_CIPHER_OP_ENCRYPT; > + else > + c_xfrm.cipher.op = > RTE_CRYPTO_CIPHER_OP_DECRYPT; > + } > + /* Update xforms to match PDCP requirements */ > + > + if ((c_xfrm.cipher.algo == RTE_CRYPTO_CIPHER_AES_CTR) || > + (c_xfrm.cipher.algo == RTE_CRYPTO_CIPHER_ZUC_EEA3 || > + (c_xfrm.cipher.algo == RTE_CRYPTO_CIPHER_SNOW3G_UEA2))) > + c_xfrm.cipher.iv.length = 16; > + else > + c_xfrm.cipher.iv.length = 0; > + > + if (conf->is_integrity_protected) { > + if (a_xfrm.auth.algo == RTE_CRYPTO_AUTH_NULL) > + a_xfrm.auth.digest_length = 0; > + else > + a_xfrm.auth.digest_length = 4; This if-else is not needed. If is_integrity_protected, digest_length should always be 4. Also define a macro for MAC-I len. It is being used at multiple places. Similarly for IV length macro can be defined. > + > + if ((a_xfrm.auth.algo == RTE_CRYPTO_AUTH_ZUC_EIA3) || > + (a_xfrm.auth.algo == RTE_CRYPTO_AUTH_SNOW3G_UIA2)) > + a_xfrm.auth.iv.length = 16; > + else > + a_xfrm.auth.iv.length = 0; > + } > + > + conf->c_xfrm = c_xfrm; > + conf->a_xfrm = a_xfrm; > + > + conf->entity.dev_id = (uint8_t)cryptodev_id_get(conf- > >is_integrity_protected, > + &conf->c_xfrm, &conf->a_xfrm); > + > + if (pdcp_test_params[index].domain == > RTE_SECURITY_PDCP_MODE_CONTROL || > + pdcp_test_params[index].domain == > RTE_SECURITY_PDCP_MODE_DATA) { > + data = pdcp_test_data_in[index]; > + hfn = pdcp_test_hfn[index] << pdcp_test_data_sn_size[index]; > + sn = pdcp_sn_from_raw_get(data, > pdcp_test_data_sn_size[index]); > + count = hfn | sn; > + } The above logic can go inside lib PDCP as well. This is specific to PDCP and not user dependent. You can reuse the pdcp_xfrm.hfn as well.