1*d30ea906Sjfb8856606 /* SPDX-License-Identifier: BSD-3-Clause
2*d30ea906Sjfb8856606  * Copyright(c) 2017 Intel Corporation
3*d30ea906Sjfb8856606  */
4*d30ea906Sjfb8856606 
5*d30ea906Sjfb8856606 #ifndef TEST_BBDEV_VECTOR_H_
6*d30ea906Sjfb8856606 #define TEST_BBDEV_VECTOR_H_
7*d30ea906Sjfb8856606 
8*d30ea906Sjfb8856606 #include <rte_bbdev_op.h>
9*d30ea906Sjfb8856606 
10*d30ea906Sjfb8856606 /* Flags which are set when specific parameter is define in vector file */
11*d30ea906Sjfb8856606 enum {
12*d30ea906Sjfb8856606 	TEST_BBDEV_VF_E = (1ULL << 0),
13*d30ea906Sjfb8856606 	TEST_BBDEV_VF_EA = (1ULL << 1),
14*d30ea906Sjfb8856606 	TEST_BBDEV_VF_EB = (1ULL << 2),
15*d30ea906Sjfb8856606 	TEST_BBDEV_VF_K = (1ULL << 3),
16*d30ea906Sjfb8856606 	TEST_BBDEV_VF_K_NEG = (1ULL << 4),
17*d30ea906Sjfb8856606 	TEST_BBDEV_VF_K_POS = (1ULL << 5),
18*d30ea906Sjfb8856606 	TEST_BBDEV_VF_C_NEG = (1ULL << 6),
19*d30ea906Sjfb8856606 	TEST_BBDEV_VF_C = (1ULL << 7),
20*d30ea906Sjfb8856606 	TEST_BBDEV_VF_CAB = (1ULL << 8),
21*d30ea906Sjfb8856606 	TEST_BBDEV_VF_RV_INDEX = (1ULL << 9),
22*d30ea906Sjfb8856606 	TEST_BBDEV_VF_ITER_MAX = (1ULL << 10),
23*d30ea906Sjfb8856606 	TEST_BBDEV_VF_ITER_MIN = (1ULL << 11),
24*d30ea906Sjfb8856606 	TEST_BBDEV_VF_EXPECTED_ITER_COUNT = (1ULL << 12),
25*d30ea906Sjfb8856606 	TEST_BBDEV_VF_EXT_SCALE = (1ULL << 13),
26*d30ea906Sjfb8856606 	TEST_BBDEV_VF_NUM_MAPS = (1ULL << 14),
27*d30ea906Sjfb8856606 	TEST_BBDEV_VF_NCB = (1ULL << 15),
28*d30ea906Sjfb8856606 	TEST_BBDEV_VF_NCB_NEG = (1ULL << 16),
29*d30ea906Sjfb8856606 	TEST_BBDEV_VF_NCB_POS = (1ULL << 17),
30*d30ea906Sjfb8856606 	TEST_BBDEV_VF_R = (1ULL << 18),
31*d30ea906Sjfb8856606 	TEST_BBDEV_VF_CODE_BLOCK_MODE = (1ULL << 19),
32*d30ea906Sjfb8856606 	TEST_BBDEV_VF_OP_FLAGS = (1ULL << 20),
33*d30ea906Sjfb8856606 	TEST_BBDEV_VF_EXPECTED_STATUS = (1ULL << 21),
34*d30ea906Sjfb8856606 };
35*d30ea906Sjfb8856606 
36*d30ea906Sjfb8856606 enum op_data_type {
37*d30ea906Sjfb8856606 	DATA_INPUT = 0,
38*d30ea906Sjfb8856606 	DATA_SOFT_OUTPUT,
39*d30ea906Sjfb8856606 	DATA_HARD_OUTPUT,
40*d30ea906Sjfb8856606 	DATA_NUM_TYPES,
41*d30ea906Sjfb8856606 };
42*d30ea906Sjfb8856606 
43*d30ea906Sjfb8856606 struct op_data_buf {
44*d30ea906Sjfb8856606 	uint32_t *addr;
45*d30ea906Sjfb8856606 	uint32_t length;
46*d30ea906Sjfb8856606 };
47*d30ea906Sjfb8856606 
48*d30ea906Sjfb8856606 struct op_data_entries {
49*d30ea906Sjfb8856606 	struct op_data_buf segments[RTE_BBDEV_MAX_CODE_BLOCKS];
50*d30ea906Sjfb8856606 	unsigned int nb_segments;
51*d30ea906Sjfb8856606 };
52*d30ea906Sjfb8856606 
53*d30ea906Sjfb8856606 struct test_bbdev_vector {
54*d30ea906Sjfb8856606 	enum rte_bbdev_op_type op_type;
55*d30ea906Sjfb8856606 	int expected_status;
56*d30ea906Sjfb8856606 	int mask;
57*d30ea906Sjfb8856606 	union {
58*d30ea906Sjfb8856606 		struct rte_bbdev_op_turbo_dec turbo_dec;
59*d30ea906Sjfb8856606 		struct rte_bbdev_op_turbo_enc turbo_enc;
60*d30ea906Sjfb8856606 	};
61*d30ea906Sjfb8856606 	/* Additional storage for op data entries */
62*d30ea906Sjfb8856606 	struct op_data_entries entries[DATA_NUM_TYPES];
63*d30ea906Sjfb8856606 };
64*d30ea906Sjfb8856606 
65*d30ea906Sjfb8856606 /* fills test vector parameters based on test file */
66*d30ea906Sjfb8856606 int
67*d30ea906Sjfb8856606 test_bbdev_vector_read(const char *filename,
68*d30ea906Sjfb8856606 		struct test_bbdev_vector *vector);
69*d30ea906Sjfb8856606 
70*d30ea906Sjfb8856606 
71*d30ea906Sjfb8856606 #endif /* TEST_BBDEV_VECTOR_H_ */
72