1 /* SPDX-License-Identifier: BSD-3-Clause 2 * 3 * Copyright (C) 2015-2016 Freescale Semiconductor,Inc. 4 * Copyright 2018-2019 NXP 5 */ 6 7 #include <time.h> 8 9 #include <rte_common.h> 10 #include <rte_hexdump.h> 11 #include <rte_mbuf.h> 12 #include <rte_malloc.h> 13 #include <rte_memcpy.h> 14 #include <rte_pause.h> 15 #include <rte_bus_vdev.h> 16 #include <rte_byteorder.h> 17 18 #include <rte_crypto.h> 19 #include <rte_cryptodev.h> 20 #include <rte_cryptodev_pmd.h> 21 #include <rte_security.h> 22 23 #include <rte_lcore.h> 24 #include "test.h" 25 #include "test_cryptodev_security_pdcp_test_func.h" 26 27 static int cplane_encap(uint32_t sn_size, uint8_t dir, 28 enum enc_alg_off enc_alg_off, 29 enum auth_alg_off auth_alg_off) 30 { 31 int i = 0; 32 33 switch (sn_size) { 34 case 5: 35 i = PDCP_CPLANE_OFFSET + enc_alg_off + 36 auth_alg_off + ((dir == 0) ? 37 UPLINK : DOWNLINK); 38 break; 39 case 12: 40 i = PDCP_CPLANE_LONG_SN_OFFSET + enc_alg_off + 41 auth_alg_off + ((dir == 0) ? 42 UPLINK : DOWNLINK); 43 break; 44 default: 45 printf("\nInvalid SN: %u for %s\n", sn_size, __func__); 46 } 47 48 return test_pdcp_proto_cplane_encap(i); 49 } 50 51 static int 52 cplane_decap(uint32_t sn_size, uint8_t dir, 53 enum enc_alg_off enc_alg_off, 54 enum auth_alg_off auth_alg_off) 55 { 56 int i = 0; 57 58 switch (sn_size) { 59 case 5: 60 i = PDCP_CPLANE_OFFSET + enc_alg_off + 61 auth_alg_off + ((dir == 0) ? 62 UPLINK : DOWNLINK); 63 break; 64 case 12: 65 i = PDCP_CPLANE_LONG_SN_OFFSET + enc_alg_off + 66 auth_alg_off + ((dir == 0) ? 67 UPLINK : DOWNLINK); 68 break; 69 default: 70 printf("\nInvalid SN: %u for %s\n", sn_size, __func__); 71 } 72 73 return test_pdcp_proto_cplane_decap(i); 74 } 75 76 static int uplane_encap_no_integrity(uint32_t sn_size, uint8_t dir, 77 enum enc_alg_off enc_alg_off) 78 { 79 int i = PDCP_UPLANE_OFFSET + ((dir == 0) ? UPLINK : DOWNLINK) + 80 enc_alg_off; 81 82 switch (sn_size) { 83 case 7: 84 i += SHORT_SEQ_NUM_OFFSET; 85 break; 86 case 15: 87 i += FIFTEEN_BIT_SEQ_NUM_OFFSET; 88 break; 89 case 12: 90 i += LONG_SEQ_NUM_OFFSET; 91 break; 92 case 18: 93 i += EIGHTEEN_BIT_SEQ_NUM_OFFSET; 94 break; 95 default: 96 printf("\nInvalid SN: %u\n", sn_size); 97 } 98 99 return test_pdcp_proto_uplane_encap(i); 100 } 101 102 static int 103 uplane_decap_no_integrity(uint32_t sn_size, uint8_t dir, 104 enum enc_alg_off enc_alg_off) 105 { 106 int i = PDCP_UPLANE_OFFSET + ((dir == 0) ? UPLINK : DOWNLINK) + 107 enc_alg_off; 108 109 switch (sn_size) { 110 case 7: 111 i += SHORT_SEQ_NUM_OFFSET; 112 break; 113 case 15: 114 i += FIFTEEN_BIT_SEQ_NUM_OFFSET; 115 break; 116 case 12: 117 i += LONG_SEQ_NUM_OFFSET; 118 break; 119 case 18: 120 i += EIGHTEEN_BIT_SEQ_NUM_OFFSET; 121 break; 122 default: 123 printf("\nInvalid SN: %u\n", sn_size); 124 } 125 126 return test_pdcp_proto_uplane_decap(i); 127 } 128 129 static int 130 uplane_encap_with_integrity(uint32_t sn_size, uint8_t dir, 131 enum enc_alg_off enc_alg_off, 132 enum auth_alg_off auth_alg_off) 133 { 134 int i = 0; 135 136 switch (sn_size) { 137 case 12: 138 i = PDCP_UPLANE_12BIT_OFFSET + enc_alg_off + 139 auth_alg_off + ((dir == 0) ? 140 UPLINK : DOWNLINK); 141 break; 142 case 18: 143 i = PDCP_UPLANE_18BIT_OFFSET + enc_alg_off + 144 auth_alg_off + ((dir == 0) ? 145 UPLINK : DOWNLINK); 146 break; 147 default: 148 printf("\nInvalid SN: %u\n", sn_size); 149 } 150 151 return test_pdcp_proto_uplane_encap_with_int(i); 152 } 153 154 static int 155 uplane_decap_with_integrity(uint32_t sn_size, uint8_t dir, 156 enum enc_alg_off enc_alg_off, 157 enum auth_alg_off auth_alg_off) 158 { 159 int i = 0; 160 161 switch (sn_size) { 162 case 12: 163 i = PDCP_UPLANE_12BIT_OFFSET + enc_alg_off + 164 auth_alg_off + ((dir == 0) ? 165 UPLINK : DOWNLINK); 166 break; 167 case 18: 168 i = PDCP_UPLANE_18BIT_OFFSET + enc_alg_off + 169 auth_alg_off + ((dir == 0) ? 170 UPLINK : DOWNLINK); 171 break; 172 default: 173 printf("\nInvalid SN: %u\n", sn_size); 174 } 175 176 return test_pdcp_proto_uplane_decap_with_int(i); 177 } 178 179 #define TEST_PDCP_COUNT(func) do { \ 180 if (func == TEST_SUCCESS) { \ 181 printf("\t%d)", n++); \ 182 printf(#func"-PASS\n"); \ 183 i++; \ 184 } else { \ 185 printf("\t%d)", n++); \ 186 printf("+++++ FAILED:" #func"\n"); \ 187 } \ 188 } while (0) 189 190 int 191 test_PDCP_PROTO_cplane_encap_all(void) 192 { 193 int i = 0, n = 0; 194 195 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, NULL_AUTH)); 196 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, NULL_AUTH)); 197 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, SNOW_AUTH)); 198 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, SNOW_AUTH)); 199 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, AES_AUTH)); 200 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, AES_AUTH)); 201 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, ZUC_AUTH)); 202 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, ZUC_AUTH)); 203 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, NULL_AUTH)); 204 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, NULL_AUTH)); 205 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, SNOW_AUTH)); 206 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, SNOW_AUTH)); 207 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, AES_AUTH)); 208 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, AES_AUTH)); 209 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, ZUC_AUTH)); 210 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, ZUC_AUTH)); 211 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, NULL_AUTH)); 212 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, NULL_AUTH)); 213 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, SNOW_AUTH)); 214 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, SNOW_AUTH)); 215 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, AES_AUTH)); 216 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, AES_AUTH)); 217 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, ZUC_AUTH)); 218 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, ZUC_AUTH)); 219 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, NULL_AUTH)); 220 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, NULL_AUTH)); 221 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, SNOW_AUTH)); 222 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, SNOW_AUTH)); 223 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, AES_AUTH)); 224 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, AES_AUTH)); 225 TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, ZUC_AUTH)); 226 TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, ZUC_AUTH)); 227 228 /* For 12-bit SN */ 229 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, NULL_AUTH)); 230 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, NULL_AUTH)); 231 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, SNOW_AUTH)); 232 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, SNOW_AUTH)); 233 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, AES_AUTH)); 234 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, AES_AUTH)); 235 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, ZUC_AUTH)); 236 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, ZUC_AUTH)); 237 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, NULL_AUTH)); 238 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, NULL_AUTH)); 239 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, SNOW_AUTH)); 240 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, SNOW_AUTH)); 241 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, AES_AUTH)); 242 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, AES_AUTH)); 243 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, ZUC_AUTH)); 244 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, ZUC_AUTH)); 245 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, NULL_AUTH)); 246 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, NULL_AUTH)); 247 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, SNOW_AUTH)); 248 249 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, SNOW_AUTH)); 250 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, AES_AUTH)); 251 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, AES_AUTH)); 252 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, ZUC_AUTH)); 253 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, ZUC_AUTH)); 254 255 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, NULL_AUTH)); 256 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, NULL_AUTH)); 257 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, SNOW_AUTH)); 258 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, SNOW_AUTH)); 259 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, AES_AUTH)); 260 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, AES_AUTH)); 261 TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, ZUC_AUTH)); 262 TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, ZUC_AUTH)); 263 264 if (n - i) 265 printf("## %s: %d passed out of %d\n", __func__, i, n); 266 267 return n - i; 268 }; 269 270 int 271 test_PDCP_PROTO_cplane_decap_all(void) 272 { 273 int i = 0, n = 0; 274 275 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, NULL_AUTH)); 276 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, NULL_AUTH)); 277 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, SNOW_AUTH)); 278 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, SNOW_AUTH)); 279 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, AES_AUTH)); 280 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, AES_AUTH)); 281 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, ZUC_AUTH)); 282 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, ZUC_AUTH)); 283 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, NULL_AUTH)); 284 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, NULL_AUTH)); 285 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, SNOW_AUTH)); 286 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, SNOW_AUTH)); 287 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, AES_AUTH)); 288 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, AES_AUTH)); 289 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, ZUC_AUTH)); 290 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, ZUC_AUTH)); 291 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, NULL_AUTH)); 292 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, NULL_AUTH)); 293 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, SNOW_AUTH)); 294 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, SNOW_AUTH)); 295 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, AES_AUTH)); 296 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, AES_AUTH)); 297 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, ZUC_AUTH)); 298 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, ZUC_AUTH)); 299 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, NULL_AUTH)); 300 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, NULL_AUTH)); 301 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, SNOW_AUTH)); 302 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, SNOW_AUTH)); 303 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, AES_AUTH)); 304 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, AES_AUTH)); 305 TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, ZUC_AUTH)); 306 TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, ZUC_AUTH)); 307 308 /* C-plane 12-bit */ 309 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, NULL_AUTH)); 310 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, NULL_AUTH)); 311 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, SNOW_AUTH)); 312 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, SNOW_AUTH)); 313 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, AES_AUTH)); 314 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, AES_AUTH)); 315 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, ZUC_AUTH)); 316 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, ZUC_AUTH)); 317 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, NULL_AUTH)); 318 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, NULL_AUTH)); 319 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, SNOW_AUTH)); 320 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, SNOW_AUTH)); 321 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, AES_AUTH)); 322 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, AES_AUTH)); 323 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, ZUC_AUTH)); 324 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, ZUC_AUTH)); 325 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, NULL_AUTH)); 326 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, NULL_AUTH)); 327 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, SNOW_AUTH)); 328 329 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, SNOW_AUTH)); 330 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, AES_AUTH)); 331 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, AES_AUTH)); 332 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, ZUC_AUTH)); 333 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, ZUC_AUTH)); 334 335 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, NULL_AUTH)); 336 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, NULL_AUTH)); 337 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, SNOW_AUTH)); 338 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, SNOW_AUTH)); 339 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, AES_AUTH)); 340 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, AES_AUTH)); 341 TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, ZUC_AUTH)); 342 TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, ZUC_AUTH)); 343 344 if (n - i) 345 printf("## %s: %d passed out of %d\n", __func__, i, n); 346 347 return n - i; 348 }; 349 350 int 351 test_PDCP_PROTO_uplane_encap_all(void) 352 { 353 int i = 0, n = 0; 354 355 TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, NULL_ENC)); 356 TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, NULL_ENC)); 357 TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, NULL_ENC)); 358 TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, NULL_ENC)); 359 TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, NULL_ENC)); 360 TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, NULL_ENC)); 361 TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, NULL_ENC)); 362 TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, NULL_ENC)); 363 364 TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, SNOW_ENC)); 365 TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, SNOW_ENC)); 366 TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, SNOW_ENC)); 367 TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, SNOW_ENC)); 368 TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, SNOW_ENC)); 369 TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, SNOW_ENC)); 370 TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, SNOW_ENC)); 371 TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, SNOW_ENC)); 372 373 TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, AES_ENC)); 374 TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, AES_ENC)); 375 TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, AES_ENC)); 376 TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, AES_ENC)); 377 TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, AES_ENC)); 378 TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, AES_ENC)); 379 TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, AES_ENC)); 380 TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, AES_ENC)); 381 382 TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, ZUC_ENC)); 383 TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, ZUC_ENC)); 384 TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, ZUC_ENC)); 385 TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, ZUC_ENC)); 386 TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, ZUC_ENC)); 387 TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, ZUC_ENC)); 388 TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, ZUC_ENC)); 389 TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, ZUC_ENC)); 390 391 /* For 12-bit SN with integrity */ 392 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, NULL_AUTH)); 393 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, NULL_AUTH)); 394 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, SNOW_AUTH)); 395 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, SNOW_AUTH)); 396 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, AES_AUTH)); 397 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, AES_AUTH)); 398 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, ZUC_AUTH)); 399 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, ZUC_AUTH)); 400 401 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, NULL_AUTH)); 402 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, NULL_AUTH)); 403 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, SNOW_AUTH)); 404 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, SNOW_AUTH)); 405 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, AES_AUTH)); 406 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, AES_AUTH)); 407 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, ZUC_AUTH)); 408 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, ZUC_AUTH)); 409 410 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, NULL_AUTH)); 411 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, NULL_AUTH)); 412 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, SNOW_AUTH)); 413 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, SNOW_AUTH)); 414 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, AES_AUTH)); 415 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, AES_AUTH)); 416 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, ZUC_AUTH)); 417 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, ZUC_AUTH)); 418 419 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, NULL_AUTH)); 420 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, NULL_AUTH)); 421 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, SNOW_AUTH)); 422 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, SNOW_AUTH)); 423 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, AES_AUTH)); 424 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, AES_AUTH)); 425 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, ZUC_AUTH)); 426 TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, ZUC_AUTH)); 427 428 /* For 18-bit SN with integrity */ 429 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, NULL_AUTH)); 430 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, NULL_AUTH)); 431 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, SNOW_AUTH)); 432 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, SNOW_AUTH)); 433 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, AES_AUTH)); 434 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, AES_AUTH)); 435 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, ZUC_AUTH)); 436 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, ZUC_AUTH)); 437 438 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, NULL_AUTH)); 439 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, NULL_AUTH)); 440 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, SNOW_AUTH)); 441 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, SNOW_AUTH)); 442 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, AES_AUTH)); 443 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, AES_AUTH)); 444 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, ZUC_AUTH)); 445 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, ZUC_AUTH)); 446 447 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, NULL_AUTH)); 448 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, NULL_AUTH)); 449 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, SNOW_AUTH)); 450 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, SNOW_AUTH)); 451 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, AES_AUTH)); 452 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, AES_AUTH)); 453 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, ZUC_AUTH)); 454 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, ZUC_AUTH)); 455 456 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, NULL_AUTH)); 457 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, NULL_AUTH)); 458 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, SNOW_AUTH)); 459 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, SNOW_AUTH)); 460 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, AES_AUTH)); 461 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, AES_AUTH)); 462 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, ZUC_AUTH)); 463 TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, ZUC_AUTH)); 464 465 if (n - i) 466 printf("## %s: %d passed out of %d\n", __func__, i, n); 467 468 return n - i; 469 }; 470 471 int 472 test_PDCP_PROTO_uplane_decap_all(void) 473 { 474 int i = 0, n = 0; 475 476 TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, NULL_ENC)); 477 TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, NULL_ENC)); 478 TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, NULL_ENC)); 479 TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, NULL_ENC)); 480 TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, NULL_ENC)); 481 TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, NULL_ENC)); 482 TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, NULL_ENC)); 483 TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, NULL_ENC)); 484 485 TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, SNOW_ENC)); 486 TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, SNOW_ENC)); 487 TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, SNOW_ENC)); 488 TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, SNOW_ENC)); 489 TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, SNOW_ENC)); 490 TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, SNOW_ENC)); 491 TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, SNOW_ENC)); 492 TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, SNOW_ENC)); 493 494 TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, AES_ENC)); 495 TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, AES_ENC)); 496 TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, AES_ENC)); 497 TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, AES_ENC)); 498 TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, AES_ENC)); 499 TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, AES_ENC)); 500 TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, AES_ENC)); 501 TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, AES_ENC)); 502 503 TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, ZUC_ENC)); 504 TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, ZUC_ENC)); 505 TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, ZUC_ENC)); 506 TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, ZUC_ENC)); 507 TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, ZUC_ENC)); 508 TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, ZUC_ENC)); 509 TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, ZUC_ENC)); 510 TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, ZUC_ENC)); 511 512 /* u-plane 12-bit with integrity */ 513 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, NULL_AUTH)); 514 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, NULL_AUTH)); 515 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, SNOW_AUTH)); 516 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, SNOW_AUTH)); 517 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, AES_AUTH)); 518 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, AES_AUTH)); 519 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, ZUC_AUTH)); 520 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, ZUC_AUTH)); 521 522 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, NULL_AUTH)); 523 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, NULL_AUTH)); 524 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, SNOW_AUTH)); 525 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, SNOW_AUTH)); 526 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, AES_AUTH)); 527 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, AES_AUTH)); 528 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, ZUC_AUTH)); 529 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, ZUC_AUTH)); 530 531 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, NULL_AUTH)); 532 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, NULL_AUTH)); 533 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, SNOW_AUTH)); 534 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, SNOW_AUTH)); 535 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, AES_AUTH)); 536 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, AES_AUTH)); 537 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, ZUC_AUTH)); 538 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, ZUC_AUTH)); 539 540 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, NULL_AUTH)); 541 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, NULL_AUTH)); 542 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, SNOW_AUTH)); 543 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, SNOW_AUTH)); 544 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, AES_AUTH)); 545 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, AES_AUTH)); 546 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, ZUC_AUTH)); 547 TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, ZUC_AUTH)); 548 549 /* u-plane 18-bit with integrity */ 550 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, NULL_AUTH)); 551 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, NULL_AUTH)); 552 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, SNOW_AUTH)); 553 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, SNOW_AUTH)); 554 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, AES_AUTH)); 555 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, AES_AUTH)); 556 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, ZUC_AUTH)); 557 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, ZUC_AUTH)); 558 559 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, NULL_AUTH)); 560 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, NULL_AUTH)); 561 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, SNOW_AUTH)); 562 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, SNOW_AUTH)); 563 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, AES_AUTH)); 564 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, AES_AUTH)); 565 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, ZUC_AUTH)); 566 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, ZUC_AUTH)); 567 568 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, NULL_AUTH)); 569 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, NULL_AUTH)); 570 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, SNOW_AUTH)); 571 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, SNOW_AUTH)); 572 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, AES_AUTH)); 573 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, AES_AUTH)); 574 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, ZUC_AUTH)); 575 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, ZUC_AUTH)); 576 577 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, NULL_AUTH)); 578 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, NULL_AUTH)); 579 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, SNOW_AUTH)); 580 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, SNOW_AUTH)); 581 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, AES_AUTH)); 582 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, AES_AUTH)); 583 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, ZUC_AUTH)); 584 TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, ZUC_AUTH)); 585 586 if (n - i) 587 printf("## %s: %d passed out of %d\n", __func__, i, n); 588 589 return n - i; 590 }; 591