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