Hi Fan,

> -----Original Message-----
> From: Zhang, Roy Fan <roy.fan.zh...@intel.com>
> Sent: Thursday, June 25, 2020 2:32 PM
> To: dev@dpdk.org
> Cc: Trahe, Fiona <fiona.tr...@intel.com>; akhil.go...@nxp.com; Zhang, Roy Fan
> <roy.fan.zh...@intel.com>
> Subject: [dpdk-dev v2 2/3] test/crypto: add unit-test for QAT direct APIs
> 
> This patch adds the test to use QAT symmetric crypto direct APIs.
> The test will be enabled only when QAT Sym PMD is built.
> 


> @@ -2451,7 +2615,11 @@ test_snow3g_authentication(const struct 
> snow3g_hash_test_data *tdata)
>       if (retval < 0)
>               return retval;
> 
> -     ut_params->op = process_crypto_request(ts_params->valid_devs[0],
> +     if (qat_api_test)
> +             process_qat_api_op(ts_params->valid_devs[0], 0, ut_params->op,
> +                             0, 1, 1);
[Fiona] it would be helpful wherever this is called to either use local params 
with useful names, enums or comments for last 3 params, e.g.:
process_qat_api_op(ts_params->valid_devs[0], 0, ut_params->op,
                                 0,   /*is_cipher    */
                                 1,   /* is_auth      */
                                 1); /* len_in_bits*/

It would be better to generalise the tests too in light of Jerin's comments.
By passing the xform to process_crypto_request(), you should be able to avoid 
all the changes
to individual tests, e.g.;
in process_crypto_request(dev, op, xform )
if (direct_pmd_datapath)
        switch (pmd) {
        qat: process_qat_api_op();
        other PMD:/*future*/
        default: break;
        }
else
        rest of process_crypto_op fn


Unfortunately the xform is usually not available where process_crypto_request 
is called, it would have to be returned from the session create function  - but 
though the 3 params are enough for the moment, it's likely other session params 
will be needed for other tests. Or by other PMDs.


> +static int
> +test_qat_sym_direct_api(void /*argv __rte_unused, int argc __rte_unused*/)
> +{
> +     int ret;
> +
> +     gbl_driver_id = rte_cryptodev_driver_id_get(
> +                     RTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD));
> +
> +     if (gbl_driver_id == -1) {
> +             RTE_LOG(ERR, USER1, "QAT PMD must be loaded. Check that both "
> +             "CONFIG_RTE_LIBRTE_PMD_QAT and CONFIG_RTE_LIBRTE_PMD_QAT_SYM "
> +             "are enabled in config file to run this testsuite.\n");
> +             return TEST_SKIPPED;
> +     }
> +
> +     qat_api_test = 1;
[Fiona] I'd suggest renaming this direct_pmd_datapath as above
This would be a good place to check that the pmd has the direct_pmd_datapath 
capability.
Checks for a finer granularity capability may be needed in process_qat_api_op() 

> +     ret = unit_test_suite_runner(&qat_direct_api_testsuite);
> +     qat_api_test = 0;
> +
> +     return ret;
> +}
> +

[Fiona] It would be good to add tests that validate the frame concept - 
enqueueing
and dequeueing only 1 descriptor at a time doesn't cover it.



Reply via email to