| 4445 | } |
| 4446 | |
| 4447 | static int |
| 4448 | test_snow3g_encryption_oop_sgl(const struct snow3g_test_data *tdata, |
| 4449 | uint8_t sgl_in, uint8_t sgl_out) |
| 4450 | { |
| 4451 | struct crypto_testsuite_params *ts_params = &testsuite_params; |
| 4452 | struct crypto_unittest_params *ut_params = &unittest_params; |
| 4453 | |
| 4454 | int retval; |
| 4455 | unsigned int plaintext_pad_len; |
| 4456 | unsigned int plaintext_len; |
| 4457 | uint8_t buffer[10000]; |
| 4458 | const uint8_t *ciphertext; |
| 4459 | |
| 4460 | struct rte_cryptodev_info dev_info; |
| 4461 | |
| 4462 | /* Verify the capabilities */ |
| 4463 | struct rte_cryptodev_sym_capability_idx cap_idx; |
| 4464 | cap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER; |
| 4465 | cap_idx.algo.cipher = RTE_CRYPTO_CIPHER_SNOW3G_UEA2; |
| 4466 | if (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0], |
| 4467 | &cap_idx) == NULL) |
| 4468 | return TEST_SKIPPED; |
| 4469 | |
| 4470 | if (global_api_test_type == CRYPTODEV_RAW_API_TEST) |
| 4471 | return TEST_SKIPPED; |
| 4472 | |
| 4473 | if (gbl_action_type == RTE_SECURITY_ACTION_TYPE_CPU_CRYPTO) |
| 4474 | return TEST_SKIPPED; |
| 4475 | |
| 4476 | rte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info); |
| 4477 | |
| 4478 | uint64_t feat_flags = dev_info.feature_flags; |
| 4479 | |
| 4480 | if (((sgl_in && sgl_out) && !(feat_flags & RTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT)) |
| 4481 | || ((!sgl_in && sgl_out) && |
| 4482 | !(feat_flags & RTE_CRYPTODEV_FF_OOP_LB_IN_SGL_OUT)) |
| 4483 | || ((sgl_in && !sgl_out) && |
| 4484 | !(feat_flags & RTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT))) { |
| 4485 | printf("Device doesn't support out-of-place scatter gather type. " |
| 4486 | "Test Skipped.\n"); |
| 4487 | return TEST_SKIPPED; |
| 4488 | } |
| 4489 | |
| 4490 | if ((global_api_test_type == CRYPTODEV_RAW_API_TEST) && |
| 4491 | (!(feat_flags & RTE_CRYPTODEV_FF_SYM_RAW_DP))) { |
| 4492 | printf("Device does not support RAW data-path APIs.\n"); |
| 4493 | return -ENOTSUP; |
| 4494 | } |
| 4495 | |
| 4496 | /* Create SNOW 3G session */ |
| 4497 | retval = create_wireless_algo_cipher_session(ts_params->valid_devs[0], |
| 4498 | RTE_CRYPTO_CIPHER_OP_ENCRYPT, |
| 4499 | RTE_CRYPTO_CIPHER_SNOW3G_UEA2, |
| 4500 | tdata->key.data, tdata->key.len, |
| 4501 | tdata->cipher_iv.len); |
| 4502 | if (retval < 0) |
| 4503 | return retval; |
| 4504 |
no test coverage detected