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
7d883e6e7SAkhil Goyal #include <time.h>
8d883e6e7SAkhil Goyal
9d883e6e7SAkhil Goyal #include <rte_common.h>
10d883e6e7SAkhil Goyal #include <rte_hexdump.h>
11d883e6e7SAkhil Goyal #include <rte_mbuf.h>
12d883e6e7SAkhil Goyal #include <rte_malloc.h>
13d883e6e7SAkhil Goyal #include <rte_memcpy.h>
14d883e6e7SAkhil Goyal #include <rte_pause.h>
15d883e6e7SAkhil Goyal #include <rte_bus_vdev.h>
16d883e6e7SAkhil Goyal #include <rte_byteorder.h>
17d883e6e7SAkhil Goyal
18d883e6e7SAkhil Goyal #include <rte_crypto.h>
19d883e6e7SAkhil Goyal #include <rte_cryptodev.h>
20d883e6e7SAkhil Goyal #include <rte_security.h>
21d883e6e7SAkhil Goyal
22d883e6e7SAkhil Goyal #include <rte_lcore.h>
23d883e6e7SAkhil Goyal #include "test.h"
24d883e6e7SAkhil Goyal #include "test_cryptodev_security_pdcp_test_func.h"
25d883e6e7SAkhil Goyal
cplane_encap(uint32_t sn_size,uint8_t dir,enum enc_alg_off enc_alg_off,enum auth_alg_off auth_alg_off)26d883e6e7SAkhil Goyal static int cplane_encap(uint32_t sn_size, uint8_t dir,
27d883e6e7SAkhil Goyal enum enc_alg_off enc_alg_off,
28d883e6e7SAkhil Goyal enum auth_alg_off auth_alg_off)
29d883e6e7SAkhil Goyal {
30d883e6e7SAkhil Goyal int i = 0;
31d883e6e7SAkhil Goyal
32d883e6e7SAkhil Goyal switch (sn_size) {
33d883e6e7SAkhil Goyal case 5:
34d883e6e7SAkhil Goyal i = PDCP_CPLANE_OFFSET + enc_alg_off +
35d883e6e7SAkhil Goyal auth_alg_off + ((dir == 0) ?
36d883e6e7SAkhil Goyal UPLINK : DOWNLINK);
37d883e6e7SAkhil Goyal break;
38d883e6e7SAkhil Goyal case 12:
39d883e6e7SAkhil Goyal i = PDCP_CPLANE_LONG_SN_OFFSET + enc_alg_off +
40d883e6e7SAkhil Goyal auth_alg_off + ((dir == 0) ?
41d883e6e7SAkhil Goyal UPLINK : DOWNLINK);
42d883e6e7SAkhil Goyal break;
43d883e6e7SAkhil Goyal default:
44d883e6e7SAkhil Goyal printf("\nInvalid SN: %u for %s\n", sn_size, __func__);
45d883e6e7SAkhil Goyal }
46d883e6e7SAkhil Goyal
47d883e6e7SAkhil Goyal return test_pdcp_proto_cplane_encap(i);
48d883e6e7SAkhil Goyal }
49d883e6e7SAkhil Goyal
5077371fe7SAkhil 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)5177371fe7SAkhil Goyal cplane_decap(uint32_t sn_size, uint8_t dir,
5277371fe7SAkhil Goyal enum enc_alg_off enc_alg_off,
5377371fe7SAkhil Goyal enum auth_alg_off auth_alg_off)
5477371fe7SAkhil Goyal {
5577371fe7SAkhil Goyal int i = 0;
5677371fe7SAkhil Goyal
5777371fe7SAkhil Goyal switch (sn_size) {
5877371fe7SAkhil Goyal case 5:
5977371fe7SAkhil Goyal i = PDCP_CPLANE_OFFSET + enc_alg_off +
6077371fe7SAkhil Goyal auth_alg_off + ((dir == 0) ?
6177371fe7SAkhil Goyal UPLINK : DOWNLINK);
6277371fe7SAkhil Goyal break;
6377371fe7SAkhil Goyal case 12:
6477371fe7SAkhil Goyal i = PDCP_CPLANE_LONG_SN_OFFSET + enc_alg_off +
6577371fe7SAkhil Goyal auth_alg_off + ((dir == 0) ?
6677371fe7SAkhil Goyal UPLINK : DOWNLINK);
6777371fe7SAkhil Goyal break;
6877371fe7SAkhil Goyal default:
6977371fe7SAkhil Goyal printf("\nInvalid SN: %u for %s\n", sn_size, __func__);
7077371fe7SAkhil Goyal }
7177371fe7SAkhil Goyal
7277371fe7SAkhil Goyal return test_pdcp_proto_cplane_decap(i);
7377371fe7SAkhil Goyal }
7477371fe7SAkhil Goyal
uplane_encap_no_integrity(uint32_t sn_size,uint8_t dir,enum enc_alg_off enc_alg_off)750fce8f6aSAkhil Goyal static int uplane_encap_no_integrity(uint32_t sn_size, uint8_t dir,
760fce8f6aSAkhil Goyal enum enc_alg_off enc_alg_off)
770fce8f6aSAkhil Goyal {
780fce8f6aSAkhil Goyal int i = PDCP_UPLANE_OFFSET + ((dir == 0) ? UPLINK : DOWNLINK) +
790fce8f6aSAkhil Goyal enc_alg_off;
800fce8f6aSAkhil Goyal
810fce8f6aSAkhil Goyal switch (sn_size) {
820fce8f6aSAkhil Goyal case 7:
830fce8f6aSAkhil Goyal i += SHORT_SEQ_NUM_OFFSET;
840fce8f6aSAkhil Goyal break;
850fce8f6aSAkhil Goyal case 15:
860fce8f6aSAkhil Goyal i += FIFTEEN_BIT_SEQ_NUM_OFFSET;
870fce8f6aSAkhil Goyal break;
880fce8f6aSAkhil Goyal case 12:
890fce8f6aSAkhil Goyal i += LONG_SEQ_NUM_OFFSET;
900fce8f6aSAkhil Goyal break;
910fce8f6aSAkhil Goyal case 18:
920fce8f6aSAkhil Goyal i += EIGHTEEN_BIT_SEQ_NUM_OFFSET;
930fce8f6aSAkhil Goyal break;
940fce8f6aSAkhil Goyal default:
950fce8f6aSAkhil Goyal printf("\nInvalid SN: %u\n", sn_size);
960fce8f6aSAkhil Goyal }
970fce8f6aSAkhil Goyal
980fce8f6aSAkhil Goyal return test_pdcp_proto_uplane_encap(i);
990fce8f6aSAkhil Goyal }
1000fce8f6aSAkhil Goyal
101cca7d1f7SAkhil Goyal static int
uplane_decap_no_integrity(uint32_t sn_size,uint8_t dir,enum enc_alg_off enc_alg_off)102*2d54b9ceSAkhil Goyal uplane_decap_no_integrity(uint32_t sn_size, uint8_t dir,
103*2d54b9ceSAkhil Goyal enum enc_alg_off enc_alg_off)
104*2d54b9ceSAkhil Goyal {
105*2d54b9ceSAkhil Goyal int i = PDCP_UPLANE_OFFSET + ((dir == 0) ? UPLINK : DOWNLINK) +
106*2d54b9ceSAkhil Goyal enc_alg_off;
107*2d54b9ceSAkhil Goyal
108*2d54b9ceSAkhil Goyal switch (sn_size) {
109*2d54b9ceSAkhil Goyal case 7:
110*2d54b9ceSAkhil Goyal i += SHORT_SEQ_NUM_OFFSET;
111*2d54b9ceSAkhil Goyal break;
112*2d54b9ceSAkhil Goyal case 15:
113*2d54b9ceSAkhil Goyal i += FIFTEEN_BIT_SEQ_NUM_OFFSET;
114*2d54b9ceSAkhil Goyal break;
115*2d54b9ceSAkhil Goyal case 12:
116*2d54b9ceSAkhil Goyal i += LONG_SEQ_NUM_OFFSET;
117*2d54b9ceSAkhil Goyal break;
118*2d54b9ceSAkhil Goyal case 18:
119*2d54b9ceSAkhil Goyal i += EIGHTEEN_BIT_SEQ_NUM_OFFSET;
120*2d54b9ceSAkhil Goyal break;
121*2d54b9ceSAkhil Goyal default:
122*2d54b9ceSAkhil Goyal printf("\nInvalid SN: %u\n", sn_size);
123*2d54b9ceSAkhil Goyal }
124*2d54b9ceSAkhil Goyal
125*2d54b9ceSAkhil Goyal return test_pdcp_proto_uplane_decap(i);
126*2d54b9ceSAkhil Goyal }
127*2d54b9ceSAkhil Goyal
128*2d54b9ceSAkhil 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)129cca7d1f7SAkhil Goyal uplane_encap_with_integrity(uint32_t sn_size, uint8_t dir,
130cca7d1f7SAkhil Goyal enum enc_alg_off enc_alg_off,
131cca7d1f7SAkhil Goyal enum auth_alg_off auth_alg_off)
132cca7d1f7SAkhil Goyal {
133cca7d1f7SAkhil Goyal int i = 0;
134cca7d1f7SAkhil Goyal
135cca7d1f7SAkhil Goyal switch (sn_size) {
136cca7d1f7SAkhil Goyal case 12:
137cca7d1f7SAkhil Goyal i = PDCP_UPLANE_12BIT_OFFSET + enc_alg_off +
138cca7d1f7SAkhil Goyal auth_alg_off + ((dir == 0) ?
139cca7d1f7SAkhil Goyal UPLINK : DOWNLINK);
140cca7d1f7SAkhil Goyal break;
141cca7d1f7SAkhil Goyal case 18:
142cca7d1f7SAkhil Goyal i = PDCP_UPLANE_18BIT_OFFSET + enc_alg_off +
143cca7d1f7SAkhil Goyal auth_alg_off + ((dir == 0) ?
144cca7d1f7SAkhil Goyal UPLINK : DOWNLINK);
145cca7d1f7SAkhil Goyal break;
146cca7d1f7SAkhil Goyal default:
147cca7d1f7SAkhil Goyal printf("\nInvalid SN: %u\n", sn_size);
148cca7d1f7SAkhil Goyal }
149cca7d1f7SAkhil Goyal
150cca7d1f7SAkhil Goyal return test_pdcp_proto_uplane_encap_with_int(i);
151cca7d1f7SAkhil Goyal }
152cca7d1f7SAkhil Goyal
153*2d54b9ceSAkhil 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)154*2d54b9ceSAkhil Goyal uplane_decap_with_integrity(uint32_t sn_size, uint8_t dir,
155*2d54b9ceSAkhil Goyal enum enc_alg_off enc_alg_off,
156*2d54b9ceSAkhil Goyal enum auth_alg_off auth_alg_off)
157*2d54b9ceSAkhil Goyal {
158*2d54b9ceSAkhil Goyal int i = 0;
159*2d54b9ceSAkhil Goyal
160*2d54b9ceSAkhil Goyal switch (sn_size) {
161*2d54b9ceSAkhil Goyal case 12:
162*2d54b9ceSAkhil Goyal i = PDCP_UPLANE_12BIT_OFFSET + enc_alg_off +
163*2d54b9ceSAkhil Goyal auth_alg_off + ((dir == 0) ?
164*2d54b9ceSAkhil Goyal UPLINK : DOWNLINK);
165*2d54b9ceSAkhil Goyal break;
166*2d54b9ceSAkhil Goyal case 18:
167*2d54b9ceSAkhil Goyal i = PDCP_UPLANE_18BIT_OFFSET + enc_alg_off +
168*2d54b9ceSAkhil Goyal auth_alg_off + ((dir == 0) ?
169*2d54b9ceSAkhil Goyal UPLINK : DOWNLINK);
170*2d54b9ceSAkhil Goyal break;
171*2d54b9ceSAkhil Goyal default:
172*2d54b9ceSAkhil Goyal printf("\nInvalid SN: %u\n", sn_size);
173*2d54b9ceSAkhil Goyal }
174*2d54b9ceSAkhil Goyal
175*2d54b9ceSAkhil Goyal return test_pdcp_proto_uplane_decap_with_int(i);
176*2d54b9ceSAkhil Goyal }
177*2d54b9ceSAkhil Goyal
178d883e6e7SAkhil Goyal #define TEST_PDCP_COUNT(func) do { \
179d883e6e7SAkhil Goyal if (func == TEST_SUCCESS) { \
180d883e6e7SAkhil Goyal printf("\t%d)", n++); \
181d883e6e7SAkhil Goyal printf(#func"-PASS\n"); \
182d883e6e7SAkhil Goyal i++; \
183d883e6e7SAkhil Goyal } else { \
184d883e6e7SAkhil Goyal printf("\t%d)", n++); \
185d883e6e7SAkhil Goyal printf("+++++ FAILED:" #func"\n"); \
186d883e6e7SAkhil Goyal } \
187d883e6e7SAkhil Goyal } while (0)
188d883e6e7SAkhil Goyal
189d883e6e7SAkhil Goyal int
test_PDCP_PROTO_cplane_encap_all(void)190d883e6e7SAkhil Goyal test_PDCP_PROTO_cplane_encap_all(void)
191d883e6e7SAkhil Goyal {
192d883e6e7SAkhil Goyal int i = 0, n = 0;
193d883e6e7SAkhil Goyal
194d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, NULL_AUTH));
195d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, NULL_AUTH));
196d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, SNOW_AUTH));
197d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, SNOW_AUTH));
198d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, AES_AUTH));
199d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, AES_AUTH));
200d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, ZUC_AUTH));
201d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, ZUC_AUTH));
202d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, NULL_AUTH));
203d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, NULL_AUTH));
204d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, SNOW_AUTH));
205d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, SNOW_AUTH));
206d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, AES_AUTH));
207d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, AES_AUTH));
208d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, ZUC_AUTH));
209d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, ZUC_AUTH));
210d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, NULL_AUTH));
211d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, NULL_AUTH));
212d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, SNOW_AUTH));
213d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, SNOW_AUTH));
214d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, AES_AUTH));
215d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, AES_AUTH));
216d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, ZUC_AUTH));
217d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, ZUC_AUTH));
218d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, NULL_AUTH));
219d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, NULL_AUTH));
220d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, SNOW_AUTH));
221d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, SNOW_AUTH));
222d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, AES_AUTH));
223d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, AES_AUTH));
224d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, ZUC_AUTH));
225d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, ZUC_AUTH));
226d883e6e7SAkhil Goyal
227d883e6e7SAkhil Goyal /* For 12-bit SN */
228d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, NULL_AUTH));
229d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, NULL_AUTH));
230d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, SNOW_AUTH));
231d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
232d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, AES_AUTH));
233d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, AES_AUTH));
234d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, ZUC_AUTH));
235d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
236d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, NULL_AUTH));
237d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
238d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, SNOW_AUTH));
239d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
240d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, AES_AUTH));
241d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, AES_AUTH));
242d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, ZUC_AUTH));
243d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
244d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, NULL_AUTH));
245d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, NULL_AUTH));
246d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, SNOW_AUTH));
247d883e6e7SAkhil Goyal
248d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, SNOW_AUTH));
249d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, AES_AUTH));
250d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, AES_AUTH));
251d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, ZUC_AUTH));
252d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, ZUC_AUTH));
253d883e6e7SAkhil Goyal
254d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, NULL_AUTH));
255d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
256d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, SNOW_AUTH));
257d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
258d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, AES_AUTH));
259d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, AES_AUTH));
260d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, ZUC_AUTH));
261d883e6e7SAkhil Goyal TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
262d883e6e7SAkhil Goyal
263d883e6e7SAkhil Goyal if (n - i)
264d883e6e7SAkhil Goyal printf("## %s: %d passed out of %d\n", __func__, i, n);
265d883e6e7SAkhil Goyal
266d883e6e7SAkhil Goyal return n - i;
267d883e6e7SAkhil Goyal };
26877371fe7SAkhil Goyal
26977371fe7SAkhil Goyal int
test_PDCP_PROTO_cplane_decap_all(void)27077371fe7SAkhil Goyal test_PDCP_PROTO_cplane_decap_all(void)
27177371fe7SAkhil Goyal {
27277371fe7SAkhil Goyal int i = 0, n = 0;
27377371fe7SAkhil Goyal
27477371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, NULL_AUTH));
27577371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, NULL_AUTH));
27677371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, SNOW_AUTH));
27777371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, SNOW_AUTH));
27877371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, AES_AUTH));
27977371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, AES_AUTH));
28077371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, ZUC_AUTH));
28177371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, ZUC_AUTH));
28277371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, NULL_AUTH));
28377371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, NULL_AUTH));
28477371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, SNOW_AUTH));
28577371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, SNOW_AUTH));
28677371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, AES_AUTH));
28777371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, AES_AUTH));
28877371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, ZUC_AUTH));
28977371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, ZUC_AUTH));
29077371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, NULL_AUTH));
29177371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, NULL_AUTH));
29277371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, SNOW_AUTH));
29377371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, SNOW_AUTH));
29477371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, AES_AUTH));
29577371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, AES_AUTH));
29677371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, ZUC_AUTH));
29777371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, ZUC_AUTH));
29877371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, NULL_AUTH));
29977371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, NULL_AUTH));
30077371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, SNOW_AUTH));
30177371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, SNOW_AUTH));
30277371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, AES_AUTH));
30377371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, AES_AUTH));
30477371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, ZUC_AUTH));
30577371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, ZUC_AUTH));
30677371fe7SAkhil Goyal
30777371fe7SAkhil Goyal /* C-plane 12-bit */
30877371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, NULL_AUTH));
30977371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, NULL_AUTH));
31077371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, SNOW_AUTH));
31177371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
31277371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, AES_AUTH));
31377371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, AES_AUTH));
31477371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, ZUC_AUTH));
31577371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
31677371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, NULL_AUTH));
31777371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
31877371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, SNOW_AUTH));
31977371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
32077371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, AES_AUTH));
32177371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, AES_AUTH));
32277371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, ZUC_AUTH));
32377371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
32477371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, NULL_AUTH));
32577371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, NULL_AUTH));
32677371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, SNOW_AUTH));
32777371fe7SAkhil Goyal
32877371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, SNOW_AUTH));
32977371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, AES_AUTH));
33077371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, AES_AUTH));
33177371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, ZUC_AUTH));
33277371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, ZUC_AUTH));
33377371fe7SAkhil Goyal
33477371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, NULL_AUTH));
33577371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
33677371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, SNOW_AUTH));
33777371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
33877371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, AES_AUTH));
33977371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, AES_AUTH));
34077371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, ZUC_AUTH));
34177371fe7SAkhil Goyal TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
34277371fe7SAkhil Goyal
34377371fe7SAkhil Goyal if (n - i)
34477371fe7SAkhil Goyal printf("## %s: %d passed out of %d\n", __func__, i, n);
34577371fe7SAkhil Goyal
34677371fe7SAkhil Goyal return n - i;
34777371fe7SAkhil Goyal };
3480fce8f6aSAkhil Goyal
3490fce8f6aSAkhil Goyal int
test_PDCP_PROTO_uplane_encap_all(void)3500fce8f6aSAkhil Goyal test_PDCP_PROTO_uplane_encap_all(void)
3510fce8f6aSAkhil Goyal {
3520fce8f6aSAkhil Goyal int i = 0, n = 0;
3530fce8f6aSAkhil Goyal
3540fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, NULL_ENC));
3550fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, NULL_ENC));
3560fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, NULL_ENC));
3570fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, NULL_ENC));
3580fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, NULL_ENC));
3590fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, NULL_ENC));
3600fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, NULL_ENC));
3610fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, NULL_ENC));
3620fce8f6aSAkhil Goyal
3630fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, SNOW_ENC));
3640fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, SNOW_ENC));
3650fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, SNOW_ENC));
3660fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, SNOW_ENC));
3670fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, SNOW_ENC));
3680fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, SNOW_ENC));
3690fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, SNOW_ENC));
3700fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, SNOW_ENC));
3710fce8f6aSAkhil Goyal
3720fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, AES_ENC));
3730fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, AES_ENC));
3740fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, AES_ENC));
3750fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, AES_ENC));
3760fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, AES_ENC));
3770fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, AES_ENC));
3780fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, AES_ENC));
3790fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, AES_ENC));
3800fce8f6aSAkhil Goyal
3810fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, ZUC_ENC));
3820fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, ZUC_ENC));
3830fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, ZUC_ENC));
3840fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, ZUC_ENC));
3850fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, ZUC_ENC));
3860fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, ZUC_ENC));
3870fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, ZUC_ENC));
3880fce8f6aSAkhil Goyal TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, ZUC_ENC));
3890fce8f6aSAkhil Goyal
390cca7d1f7SAkhil Goyal /* For 12-bit SN with integrity */
391cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, NULL_AUTH));
392cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, NULL_AUTH));
393cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, SNOW_AUTH));
394cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
395cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, AES_AUTH));
396cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, AES_AUTH));
397cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, ZUC_AUTH));
398cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
399cca7d1f7SAkhil Goyal
400cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, NULL_AUTH));
401cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
402cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, SNOW_AUTH));
403cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
404cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, AES_AUTH));
405cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, AES_AUTH));
406cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, ZUC_AUTH));
407cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
408cca7d1f7SAkhil Goyal
409cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, NULL_AUTH));
410cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, NULL_AUTH));
411cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, SNOW_AUTH));
412cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, SNOW_AUTH));
413cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, AES_AUTH));
414cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, AES_AUTH));
415cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, ZUC_AUTH));
416cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, ZUC_AUTH));
417cca7d1f7SAkhil Goyal
418cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, NULL_AUTH));
419cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
420cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, SNOW_AUTH));
421cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
422cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, AES_AUTH));
423cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, AES_AUTH));
424cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, ZUC_AUTH));
425cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
426cca7d1f7SAkhil Goyal
427cca7d1f7SAkhil Goyal /* For 18-bit SN with integrity */
428cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, NULL_AUTH));
429cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, NULL_AUTH));
430cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, SNOW_AUTH));
431cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, SNOW_AUTH));
432cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, AES_AUTH));
433cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, AES_AUTH));
434cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, ZUC_AUTH));
435cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, ZUC_AUTH));
436cca7d1f7SAkhil Goyal
437cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, NULL_AUTH));
438cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, NULL_AUTH));
439cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, SNOW_AUTH));
440cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, SNOW_AUTH));
441cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, AES_AUTH));
442cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, AES_AUTH));
443cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, ZUC_AUTH));
444cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, ZUC_AUTH));
445cca7d1f7SAkhil Goyal
446cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, NULL_AUTH));
447cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, NULL_AUTH));
448cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, SNOW_AUTH));
449cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, SNOW_AUTH));
450cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, AES_AUTH));
451cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, AES_AUTH));
452cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, ZUC_AUTH));
453cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, ZUC_AUTH));
454cca7d1f7SAkhil Goyal
455cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, NULL_AUTH));
456cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, NULL_AUTH));
457cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, SNOW_AUTH));
458cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, SNOW_AUTH));
459cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, AES_AUTH));
460cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, AES_AUTH));
461cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, ZUC_AUTH));
462cca7d1f7SAkhil Goyal TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, ZUC_AUTH));
463cca7d1f7SAkhil Goyal
4640fce8f6aSAkhil Goyal if (n - i)
4650fce8f6aSAkhil Goyal printf("## %s: %d passed out of %d\n", __func__, i, n);
4660fce8f6aSAkhil Goyal
4670fce8f6aSAkhil Goyal return n - i;
4680fce8f6aSAkhil Goyal };
469*2d54b9ceSAkhil Goyal
470*2d54b9ceSAkhil Goyal int
test_PDCP_PROTO_uplane_decap_all(void)471*2d54b9ceSAkhil Goyal test_PDCP_PROTO_uplane_decap_all(void)
472*2d54b9ceSAkhil Goyal {
473*2d54b9ceSAkhil Goyal int i = 0, n = 0;
474*2d54b9ceSAkhil Goyal
475*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, NULL_ENC));
476*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, NULL_ENC));
477*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, NULL_ENC));
478*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, NULL_ENC));
479*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, NULL_ENC));
480*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, NULL_ENC));
481*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, NULL_ENC));
482*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, NULL_ENC));
483*2d54b9ceSAkhil Goyal
484*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, SNOW_ENC));
485*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, SNOW_ENC));
486*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, SNOW_ENC));
487*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, SNOW_ENC));
488*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, SNOW_ENC));
489*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, SNOW_ENC));
490*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, SNOW_ENC));
491*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, SNOW_ENC));
492*2d54b9ceSAkhil Goyal
493*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, AES_ENC));
494*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, AES_ENC));
495*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, AES_ENC));
496*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, AES_ENC));
497*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, AES_ENC));
498*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, AES_ENC));
499*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, AES_ENC));
500*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, AES_ENC));
501*2d54b9ceSAkhil Goyal
502*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, ZUC_ENC));
503*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, ZUC_ENC));
504*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, ZUC_ENC));
505*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, ZUC_ENC));
506*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, ZUC_ENC));
507*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, ZUC_ENC));
508*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, ZUC_ENC));
509*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, ZUC_ENC));
510*2d54b9ceSAkhil Goyal
511*2d54b9ceSAkhil Goyal /* u-plane 12-bit with integrity */
512*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, NULL_AUTH));
513*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, NULL_AUTH));
514*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, SNOW_AUTH));
515*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
516*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, AES_AUTH));
517*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, AES_AUTH));
518*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, ZUC_AUTH));
519*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
520*2d54b9ceSAkhil Goyal
521*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, NULL_AUTH));
522*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
523*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, SNOW_AUTH));
524*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
525*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, AES_AUTH));
526*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, AES_AUTH));
527*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, ZUC_AUTH));
528*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
529*2d54b9ceSAkhil Goyal
530*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, NULL_AUTH));
531*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, NULL_AUTH));
532*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, SNOW_AUTH));
533*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, SNOW_AUTH));
534*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, AES_AUTH));
535*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, AES_AUTH));
536*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, ZUC_AUTH));
537*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, ZUC_AUTH));
538*2d54b9ceSAkhil Goyal
539*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, NULL_AUTH));
540*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
541*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, SNOW_AUTH));
542*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
543*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, AES_AUTH));
544*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, AES_AUTH));
545*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, ZUC_AUTH));
546*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
547*2d54b9ceSAkhil Goyal
548*2d54b9ceSAkhil Goyal /* u-plane 18-bit with integrity */
549*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, NULL_AUTH));
550*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, NULL_AUTH));
551*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, SNOW_AUTH));
552*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, SNOW_AUTH));
553*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, AES_AUTH));
554*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, AES_AUTH));
555*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, ZUC_AUTH));
556*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, ZUC_AUTH));
557*2d54b9ceSAkhil Goyal
558*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, NULL_AUTH));
559*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, NULL_AUTH));
560*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, SNOW_AUTH));
561*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, SNOW_AUTH));
562*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, AES_AUTH));
563*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, AES_AUTH));
564*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, ZUC_AUTH));
565*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, ZUC_AUTH));
566*2d54b9ceSAkhil Goyal
567*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, NULL_AUTH));
568*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, NULL_AUTH));
569*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, SNOW_AUTH));
570*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, SNOW_AUTH));
571*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, AES_AUTH));
572*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, AES_AUTH));
573*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, ZUC_AUTH));
574*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, ZUC_AUTH));
575*2d54b9ceSAkhil Goyal
576*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, NULL_AUTH));
577*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, NULL_AUTH));
578*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, SNOW_AUTH));
579*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, SNOW_AUTH));
580*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, AES_AUTH));
581*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, AES_AUTH));
582*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, ZUC_AUTH));
583*2d54b9ceSAkhil Goyal TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, ZUC_AUTH));
584*2d54b9ceSAkhil Goyal
585*2d54b9ceSAkhil Goyal if (n - i)
586*2d54b9ceSAkhil Goyal printf("## %s: %d passed out of %d\n", __func__, i, n);
587*2d54b9ceSAkhil Goyal
588*2d54b9ceSAkhil Goyal return n - i;
589*2d54b9ceSAkhil Goyal };
590