1d883e6e7SAkhil Goyal /* SPDX-License-Identifier: BSD-3-Clause
2d883e6e7SAkhil Goyal  *
3d883e6e7SAkhil Goyal  * Copyright (C) 2015-2016 Freescale Semiconductor,Inc.
4d883e6e7SAkhil Goyal  * Copyright 2018-2019 NXP
5d883e6e7SAkhil Goyal  */
6d883e6e7SAkhil Goyal 
7*3c60274cSJie Zhou #ifndef RTE_EXEC_ENV_WINDOWS
8*3c60274cSJie Zhou 
9d883e6e7SAkhil Goyal #include <time.h>
10d883e6e7SAkhil Goyal 
11d883e6e7SAkhil Goyal #include <rte_common.h>
12d883e6e7SAkhil Goyal #include <rte_hexdump.h>
13d883e6e7SAkhil Goyal #include <rte_mbuf.h>
14d883e6e7SAkhil Goyal #include <rte_malloc.h>
15d883e6e7SAkhil Goyal #include <rte_memcpy.h>
16d883e6e7SAkhil Goyal #include <rte_pause.h>
17d883e6e7SAkhil Goyal #include <rte_bus_vdev.h>
18d883e6e7SAkhil Goyal #include <rte_byteorder.h>
19d883e6e7SAkhil Goyal 
20d883e6e7SAkhil Goyal #include <rte_crypto.h>
21d883e6e7SAkhil Goyal #include <rte_cryptodev.h>
22d883e6e7SAkhil Goyal #include <rte_security.h>
23d883e6e7SAkhil Goyal 
24d883e6e7SAkhil Goyal #include <rte_lcore.h>
25d883e6e7SAkhil Goyal #include "test.h"
26d883e6e7SAkhil Goyal #include "test_cryptodev_security_pdcp_test_func.h"
27d883e6e7SAkhil Goyal 
cplane_encap(uint32_t sn_size,uint8_t dir,enum enc_alg_off enc_alg_off,enum auth_alg_off auth_alg_off)28d883e6e7SAkhil Goyal static int cplane_encap(uint32_t sn_size, uint8_t dir,
29d883e6e7SAkhil Goyal 			enum enc_alg_off enc_alg_off,
30d883e6e7SAkhil Goyal 			enum auth_alg_off auth_alg_off)
31d883e6e7SAkhil Goyal {
32d883e6e7SAkhil Goyal 	int i = 0;
33d883e6e7SAkhil Goyal 
34d883e6e7SAkhil Goyal 	switch (sn_size) {
35d883e6e7SAkhil Goyal 	case 5:
36d883e6e7SAkhil Goyal 		i = PDCP_CPLANE_OFFSET + enc_alg_off +
37d883e6e7SAkhil Goyal 			auth_alg_off + ((dir == 0) ?
38d883e6e7SAkhil Goyal 				UPLINK : DOWNLINK);
39d883e6e7SAkhil Goyal 		break;
40d883e6e7SAkhil Goyal 	case 12:
41d883e6e7SAkhil Goyal 		i = PDCP_CPLANE_LONG_SN_OFFSET + enc_alg_off +
42d883e6e7SAkhil Goyal 			auth_alg_off + ((dir == 0) ?
43d883e6e7SAkhil Goyal 				UPLINK : DOWNLINK);
44d883e6e7SAkhil Goyal 		break;
45d883e6e7SAkhil Goyal 	default:
46d883e6e7SAkhil Goyal 		printf("\nInvalid SN: %u for %s\n", sn_size, __func__);
47d883e6e7SAkhil Goyal 	}
48d883e6e7SAkhil Goyal 
49d883e6e7SAkhil Goyal 	return test_pdcp_proto_cplane_encap(i);
50d883e6e7SAkhil Goyal }
51d883e6e7SAkhil Goyal 
5277371fe7SAkhil Goyal static int
cplane_decap(uint32_t sn_size,uint8_t dir,enum enc_alg_off enc_alg_off,enum auth_alg_off auth_alg_off)5377371fe7SAkhil Goyal cplane_decap(uint32_t sn_size, uint8_t dir,
5477371fe7SAkhil Goyal 	     enum enc_alg_off enc_alg_off,
5577371fe7SAkhil Goyal 	     enum auth_alg_off auth_alg_off)
5677371fe7SAkhil Goyal {
5777371fe7SAkhil Goyal 	int i = 0;
5877371fe7SAkhil Goyal 
5977371fe7SAkhil Goyal 	switch (sn_size) {
6077371fe7SAkhil Goyal 	case 5:
6177371fe7SAkhil Goyal 		i = PDCP_CPLANE_OFFSET + enc_alg_off +
6277371fe7SAkhil Goyal 			auth_alg_off + ((dir == 0) ?
6377371fe7SAkhil Goyal 				UPLINK : DOWNLINK);
6477371fe7SAkhil Goyal 		break;
6577371fe7SAkhil Goyal 	case 12:
6677371fe7SAkhil Goyal 		i = PDCP_CPLANE_LONG_SN_OFFSET + enc_alg_off +
6777371fe7SAkhil Goyal 			auth_alg_off + ((dir == 0) ?
6877371fe7SAkhil Goyal 				UPLINK : DOWNLINK);
6977371fe7SAkhil Goyal 		break;
7077371fe7SAkhil Goyal 	default:
7177371fe7SAkhil Goyal 		printf("\nInvalid SN: %u for %s\n", sn_size, __func__);
7277371fe7SAkhil Goyal 	}
7377371fe7SAkhil Goyal 
7477371fe7SAkhil Goyal 	return test_pdcp_proto_cplane_decap(i);
7577371fe7SAkhil Goyal }
7677371fe7SAkhil Goyal 
uplane_encap_no_integrity(uint32_t sn_size,uint8_t dir,enum enc_alg_off enc_alg_off)770fce8f6aSAkhil Goyal static int uplane_encap_no_integrity(uint32_t sn_size, uint8_t dir,
780fce8f6aSAkhil Goyal 		enum enc_alg_off enc_alg_off)
790fce8f6aSAkhil Goyal {
800fce8f6aSAkhil Goyal 	int i = PDCP_UPLANE_OFFSET + ((dir == 0) ? UPLINK : DOWNLINK) +
810fce8f6aSAkhil Goyal 			enc_alg_off;
820fce8f6aSAkhil Goyal 
830fce8f6aSAkhil Goyal 	switch (sn_size) {
840fce8f6aSAkhil Goyal 	case 7:
850fce8f6aSAkhil Goyal 		i += SHORT_SEQ_NUM_OFFSET;
860fce8f6aSAkhil Goyal 		break;
870fce8f6aSAkhil Goyal 	case 15:
880fce8f6aSAkhil Goyal 		i += FIFTEEN_BIT_SEQ_NUM_OFFSET;
890fce8f6aSAkhil Goyal 		break;
900fce8f6aSAkhil Goyal 	case 12:
910fce8f6aSAkhil Goyal 		i += LONG_SEQ_NUM_OFFSET;
920fce8f6aSAkhil Goyal 		break;
930fce8f6aSAkhil Goyal 	case 18:
940fce8f6aSAkhil Goyal 		i += EIGHTEEN_BIT_SEQ_NUM_OFFSET;
950fce8f6aSAkhil Goyal 		break;
960fce8f6aSAkhil Goyal 	default:
970fce8f6aSAkhil Goyal 		printf("\nInvalid SN: %u\n", sn_size);
980fce8f6aSAkhil Goyal 	}
990fce8f6aSAkhil Goyal 
1000fce8f6aSAkhil Goyal 	return test_pdcp_proto_uplane_encap(i);
1010fce8f6aSAkhil Goyal }
1020fce8f6aSAkhil Goyal 
103cca7d1f7SAkhil Goyal static int
uplane_decap_no_integrity(uint32_t sn_size,uint8_t dir,enum enc_alg_off enc_alg_off)1042d54b9ceSAkhil Goyal uplane_decap_no_integrity(uint32_t sn_size, uint8_t dir,
1052d54b9ceSAkhil Goyal 		enum enc_alg_off enc_alg_off)
1062d54b9ceSAkhil Goyal {
1072d54b9ceSAkhil Goyal 	int i = PDCP_UPLANE_OFFSET + ((dir == 0) ? UPLINK : DOWNLINK) +
1082d54b9ceSAkhil Goyal 			enc_alg_off;
1092d54b9ceSAkhil Goyal 
1102d54b9ceSAkhil Goyal 	switch (sn_size) {
1112d54b9ceSAkhil Goyal 	case 7:
1122d54b9ceSAkhil Goyal 		i += SHORT_SEQ_NUM_OFFSET;
1132d54b9ceSAkhil Goyal 		break;
1142d54b9ceSAkhil Goyal 	case 15:
1152d54b9ceSAkhil Goyal 		i += FIFTEEN_BIT_SEQ_NUM_OFFSET;
1162d54b9ceSAkhil Goyal 		break;
1172d54b9ceSAkhil Goyal 	case 12:
1182d54b9ceSAkhil Goyal 		i += LONG_SEQ_NUM_OFFSET;
1192d54b9ceSAkhil Goyal 		break;
1202d54b9ceSAkhil Goyal 	case 18:
1212d54b9ceSAkhil Goyal 		i += EIGHTEEN_BIT_SEQ_NUM_OFFSET;
1222d54b9ceSAkhil Goyal 		break;
1232d54b9ceSAkhil Goyal 	default:
1242d54b9ceSAkhil Goyal 		printf("\nInvalid SN: %u\n", sn_size);
1252d54b9ceSAkhil Goyal 	}
1262d54b9ceSAkhil Goyal 
1272d54b9ceSAkhil Goyal 	return test_pdcp_proto_uplane_decap(i);
1282d54b9ceSAkhil Goyal }
1292d54b9ceSAkhil Goyal 
1302d54b9ceSAkhil Goyal static int
uplane_encap_with_integrity(uint32_t sn_size,uint8_t dir,enum enc_alg_off enc_alg_off,enum auth_alg_off auth_alg_off)131cca7d1f7SAkhil Goyal uplane_encap_with_integrity(uint32_t sn_size, uint8_t dir,
132cca7d1f7SAkhil Goyal 		enum enc_alg_off enc_alg_off,
133cca7d1f7SAkhil Goyal 		enum auth_alg_off auth_alg_off)
134cca7d1f7SAkhil Goyal {
135cca7d1f7SAkhil Goyal 	int i = 0;
136cca7d1f7SAkhil Goyal 
137cca7d1f7SAkhil Goyal 	switch (sn_size) {
138cca7d1f7SAkhil Goyal 	case 12:
139cca7d1f7SAkhil Goyal 		i = PDCP_UPLANE_12BIT_OFFSET + enc_alg_off +
140cca7d1f7SAkhil Goyal 			auth_alg_off + ((dir == 0) ?
141cca7d1f7SAkhil Goyal 				UPLINK : DOWNLINK);
142cca7d1f7SAkhil Goyal 		break;
143cca7d1f7SAkhil Goyal 	case 18:
144cca7d1f7SAkhil Goyal 		i = PDCP_UPLANE_18BIT_OFFSET + enc_alg_off +
145cca7d1f7SAkhil Goyal 			auth_alg_off + ((dir == 0) ?
146cca7d1f7SAkhil Goyal 				UPLINK : DOWNLINK);
147cca7d1f7SAkhil Goyal 		break;
148cca7d1f7SAkhil Goyal 	default:
149cca7d1f7SAkhil Goyal 		printf("\nInvalid SN: %u\n", sn_size);
150cca7d1f7SAkhil Goyal 	}
151cca7d1f7SAkhil Goyal 
152cca7d1f7SAkhil Goyal 	return test_pdcp_proto_uplane_encap_with_int(i);
153cca7d1f7SAkhil Goyal }
154cca7d1f7SAkhil Goyal 
1552d54b9ceSAkhil Goyal static int
uplane_decap_with_integrity(uint32_t sn_size,uint8_t dir,enum enc_alg_off enc_alg_off,enum auth_alg_off auth_alg_off)1562d54b9ceSAkhil Goyal uplane_decap_with_integrity(uint32_t sn_size, uint8_t dir,
1572d54b9ceSAkhil Goyal 		enum enc_alg_off enc_alg_off,
1582d54b9ceSAkhil Goyal 		enum auth_alg_off auth_alg_off)
1592d54b9ceSAkhil Goyal {
1602d54b9ceSAkhil Goyal 	int i = 0;
1612d54b9ceSAkhil Goyal 
1622d54b9ceSAkhil Goyal 	switch (sn_size) {
1632d54b9ceSAkhil Goyal 	case 12:
1642d54b9ceSAkhil Goyal 		i = PDCP_UPLANE_12BIT_OFFSET + enc_alg_off +
1652d54b9ceSAkhil Goyal 			auth_alg_off + ((dir == 0) ?
1662d54b9ceSAkhil Goyal 				UPLINK : DOWNLINK);
1672d54b9ceSAkhil Goyal 		break;
1682d54b9ceSAkhil Goyal 	case 18:
1692d54b9ceSAkhil Goyal 		i = PDCP_UPLANE_18BIT_OFFSET + enc_alg_off +
1702d54b9ceSAkhil Goyal 			auth_alg_off + ((dir == 0) ?
1712d54b9ceSAkhil Goyal 				UPLINK : DOWNLINK);
1722d54b9ceSAkhil Goyal 		break;
1732d54b9ceSAkhil Goyal 	default:
1742d54b9ceSAkhil Goyal 		printf("\nInvalid SN: %u\n", sn_size);
1752d54b9ceSAkhil Goyal 	}
1762d54b9ceSAkhil Goyal 
1772d54b9ceSAkhil Goyal 	return test_pdcp_proto_uplane_decap_with_int(i);
1782d54b9ceSAkhil Goyal }
1792d54b9ceSAkhil Goyal 
180d883e6e7SAkhil Goyal #define TEST_PDCP_COUNT(func) do {			\
181d883e6e7SAkhil Goyal 	if (func == TEST_SUCCESS)  {			\
182d883e6e7SAkhil Goyal 		printf("\t%d)", n++);			\
183d883e6e7SAkhil Goyal 		printf(#func"-PASS\n");			\
184d883e6e7SAkhil Goyal 		i++;					\
185d883e6e7SAkhil Goyal 	} else {					\
186d883e6e7SAkhil Goyal 		printf("\t%d)", n++);			\
187d883e6e7SAkhil Goyal 		printf("+++++ FAILED:" #func"\n");	\
188d883e6e7SAkhil Goyal 	}						\
189d883e6e7SAkhil Goyal } while (0)
190d883e6e7SAkhil Goyal 
191d883e6e7SAkhil Goyal int
test_PDCP_PROTO_cplane_encap_all(void)192d883e6e7SAkhil Goyal test_PDCP_PROTO_cplane_encap_all(void)
193d883e6e7SAkhil Goyal {
194d883e6e7SAkhil Goyal 	int i = 0, n = 0;
195d883e6e7SAkhil Goyal 
196d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, NULL_AUTH));
197d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, NULL_AUTH));
198d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, SNOW_AUTH));
199d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, SNOW_AUTH));
200d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, AES_AUTH));
201d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, AES_AUTH));
202d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, ZUC_AUTH));
203d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, ZUC_AUTH));
204d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, NULL_AUTH));
205d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, NULL_AUTH));
206d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, SNOW_AUTH));
207d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, SNOW_AUTH));
208d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, AES_AUTH));
209d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, AES_AUTH));
210d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, ZUC_AUTH));
211d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, ZUC_AUTH));
212d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, NULL_AUTH));
213d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, NULL_AUTH));
214d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, SNOW_AUTH));
215d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, SNOW_AUTH));
216d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, AES_AUTH));
217d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, AES_AUTH));
218d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, ZUC_AUTH));
219d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, ZUC_AUTH));
220d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, NULL_AUTH));
221d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, NULL_AUTH));
222d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, SNOW_AUTH));
223d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, SNOW_AUTH));
224d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, AES_AUTH));
225d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, AES_AUTH));
226d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, ZUC_AUTH));
227d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, ZUC_AUTH));
228d883e6e7SAkhil Goyal 
229d883e6e7SAkhil Goyal 	/* For 12-bit SN */
230d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, NULL_AUTH));
231d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, NULL_AUTH));
232d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, SNOW_AUTH));
233d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
234d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, AES_AUTH));
235d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, AES_AUTH));
236d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, ZUC_AUTH));
237d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
238d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, NULL_AUTH));
239d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
240d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, SNOW_AUTH));
241d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
242d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, AES_AUTH));
243d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, AES_AUTH));
244d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, ZUC_AUTH));
245d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
246d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, NULL_AUTH));
247d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, NULL_AUTH));
248d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, SNOW_AUTH));
249d883e6e7SAkhil Goyal 
250d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, SNOW_AUTH));
251d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, AES_AUTH));
252d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, AES_AUTH));
253d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, ZUC_AUTH));
254d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, ZUC_AUTH));
255d883e6e7SAkhil Goyal 
256d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, NULL_AUTH));
257d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
258d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, SNOW_AUTH));
259d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
260d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, AES_AUTH));
261d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, AES_AUTH));
262d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, ZUC_AUTH));
263d883e6e7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
264d883e6e7SAkhil Goyal 
265d883e6e7SAkhil Goyal 	if (n - i)
266d883e6e7SAkhil Goyal 		printf("## %s: %d passed out of %d\n", __func__, i, n);
267d883e6e7SAkhil Goyal 
268d883e6e7SAkhil Goyal 	return n - i;
269d883e6e7SAkhil Goyal };
27077371fe7SAkhil Goyal 
27177371fe7SAkhil Goyal int
test_PDCP_PROTO_cplane_decap_all(void)27277371fe7SAkhil Goyal test_PDCP_PROTO_cplane_decap_all(void)
27377371fe7SAkhil Goyal {
27477371fe7SAkhil Goyal 	int i = 0, n = 0;
27577371fe7SAkhil Goyal 
27677371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, NULL_AUTH));
27777371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, NULL_AUTH));
27877371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, SNOW_AUTH));
27977371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, SNOW_AUTH));
28077371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, AES_AUTH));
28177371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, AES_AUTH));
28277371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, ZUC_AUTH));
28377371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, ZUC_AUTH));
28477371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, NULL_AUTH));
28577371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, NULL_AUTH));
28677371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, SNOW_AUTH));
28777371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, SNOW_AUTH));
28877371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, AES_AUTH));
28977371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, AES_AUTH));
29077371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, ZUC_AUTH));
29177371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, ZUC_AUTH));
29277371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, NULL_AUTH));
29377371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, NULL_AUTH));
29477371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, SNOW_AUTH));
29577371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, SNOW_AUTH));
29677371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, AES_AUTH));
29777371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, AES_AUTH));
29877371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, ZUC_AUTH));
29977371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, ZUC_AUTH));
30077371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, NULL_AUTH));
30177371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, NULL_AUTH));
30277371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, SNOW_AUTH));
30377371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, SNOW_AUTH));
30477371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, AES_AUTH));
30577371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, AES_AUTH));
30677371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, ZUC_AUTH));
30777371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, ZUC_AUTH));
30877371fe7SAkhil Goyal 
30977371fe7SAkhil Goyal 	/* C-plane 12-bit */
31077371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, NULL_AUTH));
31177371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, NULL_AUTH));
31277371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, SNOW_AUTH));
31377371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
31477371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, AES_AUTH));
31577371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, AES_AUTH));
31677371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, ZUC_AUTH));
31777371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
31877371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, NULL_AUTH));
31977371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
32077371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, SNOW_AUTH));
32177371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
32277371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, AES_AUTH));
32377371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, AES_AUTH));
32477371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, ZUC_AUTH));
32577371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
32677371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, NULL_AUTH));
32777371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, NULL_AUTH));
32877371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, SNOW_AUTH));
32977371fe7SAkhil Goyal 
33077371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, SNOW_AUTH));
33177371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, AES_AUTH));
33277371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, AES_AUTH));
33377371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, ZUC_AUTH));
33477371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, ZUC_AUTH));
33577371fe7SAkhil Goyal 
33677371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, NULL_AUTH));
33777371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
33877371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, SNOW_AUTH));
33977371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
34077371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, AES_AUTH));
34177371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, AES_AUTH));
34277371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, ZUC_AUTH));
34377371fe7SAkhil Goyal 	TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
34477371fe7SAkhil Goyal 
34577371fe7SAkhil Goyal 	if (n - i)
34677371fe7SAkhil Goyal 		printf("## %s: %d passed out of %d\n", __func__, i, n);
34777371fe7SAkhil Goyal 
34877371fe7SAkhil Goyal 	return n - i;
34977371fe7SAkhil Goyal };
3500fce8f6aSAkhil Goyal 
3510fce8f6aSAkhil Goyal int
test_PDCP_PROTO_uplane_encap_all(void)3520fce8f6aSAkhil Goyal test_PDCP_PROTO_uplane_encap_all(void)
3530fce8f6aSAkhil Goyal {
3540fce8f6aSAkhil Goyal 	int i = 0, n = 0;
3550fce8f6aSAkhil Goyal 
3560fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, NULL_ENC));
3570fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, NULL_ENC));
3580fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, NULL_ENC));
3590fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, NULL_ENC));
3600fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, NULL_ENC));
3610fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, NULL_ENC));
3620fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, NULL_ENC));
3630fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, NULL_ENC));
3640fce8f6aSAkhil Goyal 
3650fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, SNOW_ENC));
3660fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, SNOW_ENC));
3670fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, SNOW_ENC));
3680fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, SNOW_ENC));
3690fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, SNOW_ENC));
3700fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, SNOW_ENC));
3710fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, SNOW_ENC));
3720fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, SNOW_ENC));
3730fce8f6aSAkhil Goyal 
3740fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, AES_ENC));
3750fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, AES_ENC));
3760fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, AES_ENC));
3770fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, AES_ENC));
3780fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, AES_ENC));
3790fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, AES_ENC));
3800fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, AES_ENC));
3810fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, AES_ENC));
3820fce8f6aSAkhil Goyal 
3830fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, ZUC_ENC));
3840fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, ZUC_ENC));
3850fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, ZUC_ENC));
3860fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, ZUC_ENC));
3870fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, ZUC_ENC));
3880fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, ZUC_ENC));
3890fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, ZUC_ENC));
3900fce8f6aSAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, ZUC_ENC));
3910fce8f6aSAkhil Goyal 
392cca7d1f7SAkhil Goyal 	/* For 12-bit SN with integrity */
393cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, NULL_AUTH));
394cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, NULL_AUTH));
395cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, SNOW_AUTH));
396cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
397cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, AES_AUTH));
398cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, AES_AUTH));
399cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, ZUC_AUTH));
400cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
401cca7d1f7SAkhil Goyal 
402cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, NULL_AUTH));
403cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
404cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, SNOW_AUTH));
405cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
406cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, AES_AUTH));
407cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, AES_AUTH));
408cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, ZUC_AUTH));
409cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
410cca7d1f7SAkhil Goyal 
411cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, NULL_AUTH));
412cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, NULL_AUTH));
413cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, SNOW_AUTH));
414cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, SNOW_AUTH));
415cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, AES_AUTH));
416cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, AES_AUTH));
417cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, ZUC_AUTH));
418cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, ZUC_AUTH));
419cca7d1f7SAkhil Goyal 
420cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, NULL_AUTH));
421cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
422cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, SNOW_AUTH));
423cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
424cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, AES_AUTH));
425cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, AES_AUTH));
426cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, ZUC_AUTH));
427cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
428cca7d1f7SAkhil Goyal 
429cca7d1f7SAkhil Goyal 	/* For 18-bit SN with integrity */
430cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, NULL_AUTH));
431cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, NULL_AUTH));
432cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, SNOW_AUTH));
433cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, SNOW_AUTH));
434cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, AES_AUTH));
435cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, AES_AUTH));
436cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, ZUC_AUTH));
437cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, ZUC_AUTH));
438cca7d1f7SAkhil Goyal 
439cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, NULL_AUTH));
440cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, NULL_AUTH));
441cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, SNOW_AUTH));
442cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, SNOW_AUTH));
443cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, AES_AUTH));
444cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, AES_AUTH));
445cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, ZUC_AUTH));
446cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, ZUC_AUTH));
447cca7d1f7SAkhil Goyal 
448cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, NULL_AUTH));
449cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, NULL_AUTH));
450cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, SNOW_AUTH));
451cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, SNOW_AUTH));
452cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, AES_AUTH));
453cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, AES_AUTH));
454cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, ZUC_AUTH));
455cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, ZUC_AUTH));
456cca7d1f7SAkhil Goyal 
457cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, NULL_AUTH));
458cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, NULL_AUTH));
459cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, SNOW_AUTH));
460cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, SNOW_AUTH));
461cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, AES_AUTH));
462cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, AES_AUTH));
463cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, ZUC_AUTH));
464cca7d1f7SAkhil Goyal 	TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, ZUC_AUTH));
465cca7d1f7SAkhil Goyal 
4660fce8f6aSAkhil Goyal 	if (n - i)
4670fce8f6aSAkhil Goyal 		printf("## %s: %d passed out of %d\n", __func__, i, n);
4680fce8f6aSAkhil Goyal 
4690fce8f6aSAkhil Goyal 	return n - i;
4700fce8f6aSAkhil Goyal };
4712d54b9ceSAkhil Goyal 
4722d54b9ceSAkhil Goyal int
test_PDCP_PROTO_uplane_decap_all(void)4732d54b9ceSAkhil Goyal test_PDCP_PROTO_uplane_decap_all(void)
4742d54b9ceSAkhil Goyal {
4752d54b9ceSAkhil Goyal 	int i = 0, n = 0;
4762d54b9ceSAkhil Goyal 
4772d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, NULL_ENC));
4782d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, NULL_ENC));
4792d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, NULL_ENC));
4802d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, NULL_ENC));
4812d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, NULL_ENC));
4822d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, NULL_ENC));
4832d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, NULL_ENC));
4842d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, NULL_ENC));
4852d54b9ceSAkhil Goyal 
4862d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, SNOW_ENC));
4872d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, SNOW_ENC));
4882d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, SNOW_ENC));
4892d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, SNOW_ENC));
4902d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, SNOW_ENC));
4912d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, SNOW_ENC));
4922d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, SNOW_ENC));
4932d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, SNOW_ENC));
4942d54b9ceSAkhil Goyal 
4952d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, AES_ENC));
4962d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, AES_ENC));
4972d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, AES_ENC));
4982d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, AES_ENC));
4992d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, AES_ENC));
5002d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, AES_ENC));
5012d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, AES_ENC));
5022d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, AES_ENC));
5032d54b9ceSAkhil Goyal 
5042d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, ZUC_ENC));
5052d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, ZUC_ENC));
5062d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, ZUC_ENC));
5072d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, ZUC_ENC));
5082d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, ZUC_ENC));
5092d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, ZUC_ENC));
5102d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, ZUC_ENC));
5112d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, ZUC_ENC));
5122d54b9ceSAkhil Goyal 
5132d54b9ceSAkhil Goyal 	/* u-plane 12-bit with integrity */
5142d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, NULL_AUTH));
5152d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, NULL_AUTH));
5162d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, SNOW_AUTH));
5172d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
5182d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, AES_AUTH));
5192d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, AES_AUTH));
5202d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, ZUC_AUTH));
5212d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
5222d54b9ceSAkhil Goyal 
5232d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, NULL_AUTH));
5242d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
5252d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, SNOW_AUTH));
5262d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
5272d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, AES_AUTH));
5282d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, AES_AUTH));
5292d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, ZUC_AUTH));
5302d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
5312d54b9ceSAkhil Goyal 
5322d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, NULL_AUTH));
5332d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, NULL_AUTH));
5342d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, SNOW_AUTH));
5352d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, SNOW_AUTH));
5362d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, AES_AUTH));
5372d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, AES_AUTH));
5382d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, ZUC_AUTH));
5392d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, ZUC_AUTH));
5402d54b9ceSAkhil Goyal 
5412d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, NULL_AUTH));
5422d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
5432d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, SNOW_AUTH));
5442d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
5452d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, AES_AUTH));
5462d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, AES_AUTH));
5472d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, ZUC_AUTH));
5482d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
5492d54b9ceSAkhil Goyal 
5502d54b9ceSAkhil Goyal 	/* u-plane 18-bit with integrity */
5512d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, NULL_AUTH));
5522d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, NULL_AUTH));
5532d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, SNOW_AUTH));
5542d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, SNOW_AUTH));
5552d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, AES_AUTH));
5562d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, AES_AUTH));
5572d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, ZUC_AUTH));
5582d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, ZUC_AUTH));
5592d54b9ceSAkhil Goyal 
5602d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, NULL_AUTH));
5612d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, NULL_AUTH));
5622d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, SNOW_AUTH));
5632d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, SNOW_AUTH));
5642d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, AES_AUTH));
5652d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, AES_AUTH));
5662d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, ZUC_AUTH));
5672d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, ZUC_AUTH));
5682d54b9ceSAkhil Goyal 
5692d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, NULL_AUTH));
5702d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, NULL_AUTH));
5712d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, SNOW_AUTH));
5722d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, SNOW_AUTH));
5732d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, AES_AUTH));
5742d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, AES_AUTH));
5752d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, ZUC_AUTH));
5762d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, ZUC_AUTH));
5772d54b9ceSAkhil Goyal 
5782d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, NULL_AUTH));
5792d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, NULL_AUTH));
5802d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, SNOW_AUTH));
5812d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, SNOW_AUTH));
5822d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, AES_AUTH));
5832d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, AES_AUTH));
5842d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, ZUC_AUTH));
5852d54b9ceSAkhil Goyal 	TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, ZUC_AUTH));
5862d54b9ceSAkhil Goyal 
5872d54b9ceSAkhil Goyal 	if (n - i)
5882d54b9ceSAkhil Goyal 		printf("## %s: %d passed out of %d\n", __func__, i, n);
5892d54b9ceSAkhil Goyal 
5902d54b9ceSAkhil Goyal 	return n - i;
5912d54b9ceSAkhil Goyal };
592*3c60274cSJie Zhou 
593*3c60274cSJie Zhou #endif /* !RTE_EXEC_ENV_WINDOWS */
594