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