summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.ci/linux-build.sh8
-rwxr-xr-x.ci/linux-setup.sh2
-rw-r--r--.travis.yml7
-rw-r--r--MAINTAINERS19
-rw-r--r--app/pdump/main.c13
-rw-r--r--app/proc-info/main.c44
-rw-r--r--app/test-bbdev/Makefile3
-rw-r--r--app/test-bbdev/meson.build6
-rw-r--r--app/test-bbdev/test_bbdev_perf.c8
-rw-r--r--app/test-compress-perf/comp_perf_options.h4
-rw-r--r--app/test-compress-perf/comp_perf_options_parse.c19
-rw-r--r--app/test-compress-perf/comp_perf_test_benchmark.c3
-rw-r--r--app/test-compress-perf/comp_perf_test_common.c212
-rw-r--r--app/test-compress-perf/comp_perf_test_common.h9
-rw-r--r--app/test-compress-perf/comp_perf_test_verify.c4
-rw-r--r--app/test-compress-perf/main.c8
-rw-r--r--app/test-crypto-perf/cperf_options_parsing.c7
-rw-r--r--app/test-eventdev/evt_common.h30
-rw-r--r--app/test-eventdev/evt_options.c28
-rw-r--r--app/test-eventdev/evt_options.h2
-rw-r--r--app/test-eventdev/test_perf_common.c15
-rw-r--r--app/test-eventdev/test_pipeline_common.c54
-rw-r--r--app/test-eventdev/test_pipeline_common.h6
-rw-r--r--app/test-pipeline/init.c16
-rw-r--r--app/test-pmd/cmdline.c172
-rw-r--r--app/test-pmd/cmdline_flow.c111
-rw-r--r--app/test-pmd/config.c115
-rw-r--r--app/test-pmd/parameters.c8
-rw-r--r--app/test-pmd/softnicfwd.c16
-rw-r--r--app/test-pmd/testpmd.c84
-rw-r--r--app/test-pmd/testpmd.h8
-rw-r--r--app/test-pmd/util.c86
-rw-r--r--app/test/Makefile1
-rw-r--r--app/test/meson.build1
-rw-r--r--app/test/test_compressdev.c839
-rw-r--r--app/test/test_cryptodev.c1027
-rw-r--r--app/test/test_cryptodev.h1
-rw-r--r--app/test/test_cryptodev_aes_test_vectors.h48
-rw-r--r--app/test/test_cryptodev_blockcipher.c9
-rw-r--r--app/test/test_cryptodev_blockcipher.h1
-rw-r--r--app/test/test_cryptodev_security_pdcp.c590
-rw-r--r--app/test/test_cryptodev_security_pdcp_test_func.h48
-rw-r--r--app/test/test_cryptodev_security_pdcp_test_vectors.h6323
-rw-r--r--app/test/test_event_crypto_adapter.c30
-rw-r--r--app/test/test_event_eth_rx_adapter.c12
-rw-r--r--app/test/test_event_eth_tx_adapter.c8
-rw-r--r--app/test/test_eventdev.c7
-rw-r--r--app/test/test_external_mem.c1
-rw-r--r--app/test/test_interrupts.c10
-rw-r--r--app/test/test_ipsec.c4
-rw-r--r--app/test/test_kni.c34
-rw-r--r--app/test/test_link_bonding.c371
-rw-r--r--app/test/test_link_bonding_mode4.c30
-rw-r--r--app/test/test_link_bonding_rssconf.c33
-rw-r--r--app/test/test_malloc.c1
-rw-r--r--app/test/test_mbuf.c160
-rw-r--r--app/test/test_memory.c1
-rw-r--r--app/test/test_memzone.c1
-rw-r--r--app/test/test_pmd_perf.c24
-rw-r--r--app/test/test_pmd_ring.c17
-rw-r--r--app/test/test_tailq.c1
-rw-r--r--app/test/virtual_pmd.c20
-rwxr-xr-xbuildtools/check-experimental-syms.sh15
-rw-r--r--config/common_base18
-rw-r--r--config/common_linux5
-rw-r--r--config/defconfig_arm-armv7a-linuxapp-gcc1
-rw-r--r--config/defconfig_arm64-dpaa2-linuxapp-gcc3
-rw-r--r--config/defconfig_i686-native-linuxapp-gcc5
-rw-r--r--config/defconfig_i686-native-linuxapp-icc5
-rw-r--r--config/defconfig_ppc_64-power8-linuxapp-gcc1
-rw-r--r--config/defconfig_x86_64-native-linuxapp-icc5
-rw-r--r--config/defconfig_x86_x32-native-linuxapp-gcc5
-rw-r--r--config/meson.build1
-rwxr-xr-xdevtools/test-build.sh9
-rwxr-xr-xdevtools/test-meson-builds.sh23
-rw-r--r--doc/guides/bbdevs/fpga_lte_fec.rst2
-rw-r--r--doc/guides/compressdevs/features/default.ini37
-rw-r--r--doc/guides/compressdevs/features/qat.ini21
-rw-r--r--doc/guides/compressdevs/qat_comp.rst5
-rw-r--r--doc/guides/cryptodevs/aesni_gcm.rst3
-rw-r--r--doc/guides/cryptodevs/dpaa_sec.rst6
-rw-r--r--doc/guides/cryptodevs/features/dpaa2_sec.ini4
-rw-r--r--doc/guides/cryptodevs/features/nitrox.ini40
-rw-r--r--doc/guides/cryptodevs/index.rst1
-rw-r--r--doc/guides/cryptodevs/nitrox.rst51
-rw-r--r--doc/guides/cryptodevs/qat.rst11
-rw-r--r--doc/guides/nics/bnx2x.rst30
-rw-r--r--doc/guides/nics/cxgbe.rst57
-rw-r--r--doc/guides/nics/dpaa2.rst4
-rw-r--r--doc/guides/nics/ena.rst31
-rw-r--r--doc/guides/nics/enic.rst33
-rw-r--r--doc/guides/nics/features/hns3.ini34
-rw-r--r--doc/guides/nics/features/hns3_vf.ini29
-rw-r--r--doc/guides/nics/features/octeontx2.ini2
-rw-r--r--doc/guides/nics/features/octeontx2_vec.ini1
-rw-r--r--doc/guides/nics/features/octeontx2_vf.ini2
-rw-r--r--doc/guides/nics/hns3.rst60
-rw-r--r--doc/guides/nics/i40e.rst10
-rw-r--r--doc/guides/nics/ice.rst121
-rw-r--r--doc/guides/nics/index.rst1
-rw-r--r--doc/guides/nics/mlx5.rst45
-rw-r--r--doc/guides/nics/qede.rst39
-rw-r--r--doc/guides/nics/vhost.rst5
-rw-r--r--doc/guides/nics/virtio.rst2
-rw-r--r--doc/guides/platform/octeontx2.rst1
-rw-r--r--doc/guides/prog_guide/bpf_lib.rst2
-rw-r--r--doc/guides/prog_guide/event_ethernet_tx_adapter.rst3
-rw-r--r--doc/guides/prog_guide/kernel_nic_interface.rst9
-rw-r--r--doc/guides/prog_guide/rte_flow.rst28
-rw-r--r--doc/guides/rel_notes/deprecation.rst7
-rw-r--r--doc/guides/rel_notes/release_19_11.rst101
-rw-r--r--doc/guides/sample_app_ug/flow_classify.rst10
-rw-r--r--doc/guides/sample_app_ug/flow_filtering.rst15
-rw-r--r--doc/guides/sample_app_ug/link_status_intr.rst9
-rw-r--r--doc/guides/sample_app_ug/rxtx_callbacks.rst5
-rw-r--r--doc/guides/sample_app_ug/skeleton.rst6
-rw-r--r--doc/guides/testpmd_app_ug/testpmd_funcs.rst24
-rw-r--r--doc/guides/tools/testeventdev.rst10
-rw-r--r--drivers/baseband/Makefile2
-rw-r--r--drivers/baseband/fpga_lte_fec/Makefile6
-rw-r--r--drivers/baseband/fpga_lte_fec/fpga_lte_fec.h1
-rw-r--r--drivers/baseband/fpga_lte_fec/meson.build1
-rw-r--r--drivers/baseband/fpga_lte_fec/rte_pmd_bbdev_fpga_lte_fec_version.map7
-rw-r--r--drivers/baseband/meson.build4
-rw-r--r--drivers/baseband/null/meson.build1
-rw-r--r--drivers/baseband/turbo_sw/meson.build1
-rw-r--r--drivers/bus/dpaa/base/qbman/qman.c89
-rw-r--r--drivers/bus/dpaa/base/qbman/qman_driver.c104
-rw-r--r--drivers/bus/dpaa/base/qbman/qman_priv.h15
-rw-r--r--drivers/bus/dpaa/dpaa_bus.c32
-rw-r--r--drivers/bus/dpaa/include/fsl_qman.h23
-rw-r--r--drivers/bus/dpaa/include/fsl_usd.h7
-rw-r--r--drivers/bus/dpaa/rte_bus_dpaa_version.map17
-rw-r--r--drivers/bus/dpaa/rte_dpaa_bus.h1
-rw-r--r--drivers/bus/fslmc/fslmc_bus.c33
-rw-r--r--drivers/bus/fslmc/fslmc_vfio.c162
-rw-r--r--drivers/bus/fslmc/fslmc_vfio.h3
-rw-r--r--drivers/bus/fslmc/portal/dpaa2_hw_pvt.h18
-rw-r--r--drivers/bus/fslmc/rte_fslmc.h1
-rw-r--r--drivers/bus/pci/bsd/pci.c1
-rw-r--r--drivers/bus/pci/linux/pci.c14
-rw-r--r--drivers/bus/pci/linux/pci_uio.c1
-rw-r--r--drivers/bus/pci/linux/pci_vfio.c1
-rw-r--r--drivers/bus/vmbus/linux/vmbus_uio.c1
-rw-r--r--drivers/common/cpt/cpt_mcode_defines.h4
-rw-r--r--drivers/common/cpt/cpt_pmd_logs.h12
-rw-r--r--drivers/common/cpt/cpt_ucode.h6
-rw-r--r--drivers/common/dpaax/dpaax_iova_table.c15
-rw-r--r--drivers/common/octeontx2/hw/otx2_nix.h12
-rw-r--r--drivers/common/octeontx2/hw/otx2_npc.h16
-rw-r--r--drivers/common/octeontx2/otx2_common.h17
-rw-r--r--drivers/common/octeontx2/otx2_mbox.h1
-rw-r--r--drivers/common/qat/qat_adf/icp_qat_fw_comp.h73
-rw-r--r--drivers/common/qat/qat_adf/icp_qat_fw_la.h19
-rw-r--r--drivers/common/qat/qat_adf/icp_qat_hw.h19
-rw-r--r--drivers/compress/isal/isal_compress_pmd_ops.c2
-rw-r--r--drivers/compress/qat/qat_comp.c256
-rw-r--r--drivers/compress/qat/qat_comp.h32
-rw-r--r--drivers/compress/qat/qat_comp_pmd.c166
-rw-r--r--drivers/compress/qat/qat_comp_pmd.h2
-rw-r--r--drivers/crypto/Makefile1
-rw-r--r--drivers/crypto/aesni_mb/rte_aesni_mb_pmd.c21
-rw-r--r--drivers/crypto/armv8/rte_armv8_pmd.c1
-rw-r--r--drivers/crypto/caam_jr/Makefile1
-rw-r--r--drivers/crypto/caam_jr/caam_jr.c41
-rw-r--r--drivers/crypto/caam_jr/caam_jr_pvt.h6
-rw-r--r--drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c707
-rw-r--r--drivers/crypto/dpaa2_sec/dpaa2_sec_event.h2
-rw-r--r--drivers/crypto/dpaa2_sec/dpaa2_sec_logs.h4
-rw-r--r--drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h98
-rw-r--r--drivers/crypto/dpaa2_sec/hw/desc.h8
-rw-r--r--drivers/crypto/dpaa2_sec/hw/desc/algo.h295
-rw-r--r--drivers/crypto/dpaa2_sec/hw/desc/pdcp.h1387
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/fifo_load_store_cmd.h9
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/header_cmd.h21
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/jump_cmd.h3
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/key_cmd.h5
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/load_cmd.h10
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/math_cmd.h12
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/move_cmd.h8
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/nfifo_cmd.h10
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/operation_cmd.h6
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/protocol_cmd.h11
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/sec_run_time_asm.h27
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/seq_in_out_ptr_cmd.h7
-rw-r--r--drivers/crypto/dpaa2_sec/hw/rta/store_cmd.h6
-rw-r--r--drivers/crypto/dpaa_sec/Makefile1
-rw-r--r--drivers/crypto/dpaa_sec/dpaa_sec.c695
-rw-r--r--drivers/crypto/dpaa_sec/dpaa_sec.h23
-rw-r--r--drivers/crypto/dpaa_sec/dpaa_sec_event.h19
-rw-r--r--drivers/crypto/dpaa_sec/rte_pmd_dpaa_sec_version.map8
-rw-r--r--drivers/crypto/meson.build4
-rw-r--r--drivers/crypto/mvsam/rte_mrvl_pmd.c1
-rw-r--r--drivers/crypto/nitrox/Makefile34
-rw-r--r--drivers/crypto/nitrox/meson.build19
-rw-r--r--drivers/crypto/nitrox/nitrox_csr.h40
-rw-r--r--drivers/crypto/nitrox/nitrox_device.c124
-rw-r--r--drivers/crypto/nitrox/nitrox_device.h22
-rw-r--r--drivers/crypto/nitrox/nitrox_hal.c236
-rw-r--r--drivers/crypto/nitrox/nitrox_hal.h165
-rw-r--r--drivers/crypto/nitrox/nitrox_logs.c14
-rw-r--r--drivers/crypto/nitrox/nitrox_logs.h15
-rw-r--r--drivers/crypto/nitrox/nitrox_qp.c115
-rw-r--r--drivers/crypto/nitrox/nitrox_qp.h104
-rw-r--r--drivers/crypto/nitrox/nitrox_sym.c728
-rw-r--r--drivers/crypto/nitrox/nitrox_sym.h13
-rw-r--r--drivers/crypto/nitrox/nitrox_sym_capabilities.c99
-rw-r--r--drivers/crypto/nitrox/nitrox_sym_capabilities.h12
-rw-r--r--drivers/crypto/nitrox/nitrox_sym_ctx.h84
-rw-r--r--drivers/crypto/nitrox/nitrox_sym_reqmgr.c635
-rw-r--r--drivers/crypto/nitrox/nitrox_sym_reqmgr.h23
-rw-r--r--drivers/crypto/nitrox/rte_pmd_nitrox_version.map3
-rw-r--r--drivers/crypto/octeontx/otx_cryptodev.c24
-rw-r--r--drivers/crypto/octeontx/otx_cryptodev.h6
-rw-r--r--drivers/crypto/octeontx/otx_cryptodev_hw_access.h2
-rw-r--r--drivers/crypto/octeontx/otx_cryptodev_ops.c6
-rw-r--r--drivers/crypto/openssl/rte_openssl_pmd.c1
-rw-r--r--drivers/crypto/qat/qat_sym.c13
-rw-r--r--drivers/crypto/qat/qat_sym_capabilities.h4
-rw-r--r--drivers/crypto/qat/qat_sym_session.c87
-rw-r--r--drivers/crypto/qat/qat_sym_session.h9
-rw-r--r--drivers/crypto/virtio/virtio_cryptodev.c2
-rw-r--r--drivers/event/dpaa/Makefile3
-rw-r--r--drivers/event/dpaa/dpaa_eventdev.c230
-rw-r--r--drivers/event/dpaa/dpaa_eventdev.h7
-rw-r--r--drivers/event/dpaa/meson.build3
-rw-r--r--drivers/event/dpaa2/Makefile7
-rw-r--r--drivers/event/dpaa2/dpaa2_eventdev.c162
-rw-r--r--drivers/event/dpaa2/dpaa2_eventdev.h16
-rw-r--r--drivers/event/dpaa2/dpaa2_eventdev_logs.h8
-rw-r--r--drivers/event/dpaa2/dpaa2_eventdev_selftest.c833
-rw-r--r--drivers/event/dpaa2/meson.build3
-rw-r--r--drivers/event/octeontx/ssovf_evdev.c1
-rw-r--r--drivers/event/octeontx2/otx2_evdev.c32
-rw-r--r--drivers/event/octeontx2/otx2_evdev.h2
-rw-r--r--drivers/event/octeontx2/otx2_evdev_adptr.c3
-rw-r--r--drivers/event/octeontx2/otx2_worker.c4
-rw-r--r--drivers/event/octeontx2/otx2_worker.h2
-rw-r--r--drivers/event/octeontx2/otx2_worker_dual.c4
-rw-r--r--drivers/event/opdl/opdl_ring.c1
-rw-r--r--drivers/event/sw/sw_evdev_xstats.c5
-rw-r--r--drivers/mempool/dpaa/dpaa_mempool.c4
-rw-r--r--drivers/net/Makefile1
-rw-r--r--drivers/net/af_packet/rte_eth_af_packet.c30
-rw-r--r--drivers/net/af_xdp/rte_eth_af_xdp.c30
-rw-r--r--drivers/net/ark/ark_ethdev.c14
-rw-r--r--drivers/net/atlantic/atl_ethdev.c103
-rw-r--r--drivers/net/atlantic/atl_types.h3
-rw-r--r--drivers/net/atlantic/hw_atl/hw_atl_utils_fw2x.c82
-rw-r--r--drivers/net/avp/avp_ethdev.c26
-rw-r--r--drivers/net/axgbe/axgbe_ethdev.c40
-rw-r--r--drivers/net/bnx2x/bnx2x.c63
-rw-r--r--drivers/net/bnx2x/bnx2x.h95
-rw-r--r--drivers/net/bnx2x/bnx2x_ethdev.c20
-rw-r--r--drivers/net/bnx2x/bnx2x_osal.h29
-rw-r--r--drivers/net/bnx2x/bnx2x_rxtx.c10
-rw-r--r--drivers/net/bnx2x/ecore_fw_defs.h252
-rw-r--r--drivers/net/bnx2x/ecore_hsi.h3508
-rw-r--r--drivers/net/bnx2x/ecore_init.h214
-rw-r--r--drivers/net/bnx2x/ecore_init_ops.h192
-rw-r--r--drivers/net/bnx2x/ecore_mfw_req.h11
-rw-r--r--drivers/net/bnx2x/ecore_reg.h6617
-rw-r--r--drivers/net/bnx2x/ecore_sp.c48
-rw-r--r--drivers/net/bnx2x/ecore_sp.h308
-rw-r--r--drivers/net/bnxt/bnxt.h189
-rw-r--r--drivers/net/bnxt/bnxt_cpr.c124
-rw-r--r--drivers/net/bnxt/bnxt_cpr.h19
-rw-r--r--drivers/net/bnxt/bnxt_ethdev.c1446
-rw-r--r--drivers/net/bnxt/bnxt_filter.c20
-rw-r--r--drivers/net/bnxt/bnxt_filter.h18
-rw-r--r--drivers/net/bnxt/bnxt_flow.c900
-rw-r--r--drivers/net/bnxt/bnxt_hwrm.c796
-rw-r--r--drivers/net/bnxt/bnxt_hwrm.h32
-rw-r--r--drivers/net/bnxt/bnxt_irq.c2
-rw-r--r--drivers/net/bnxt/bnxt_irq.h1
-rw-r--r--drivers/net/bnxt/bnxt_ring.c232
-rw-r--r--drivers/net/bnxt/bnxt_ring.h4
-rw-r--r--drivers/net/bnxt/bnxt_rxq.c154
-rw-r--r--drivers/net/bnxt/bnxt_rxq.h3
-rw-r--r--drivers/net/bnxt/bnxt_rxr.c172
-rw-r--r--drivers/net/bnxt/bnxt_rxr.h43
-rw-r--r--drivers/net/bnxt/bnxt_rxtx_vec_sse.c30
-rw-r--r--drivers/net/bnxt/bnxt_stats.c74
-rw-r--r--drivers/net/bnxt/bnxt_stats.h4
-rw-r--r--drivers/net/bnxt/bnxt_txq.c16
-rw-r--r--drivers/net/bnxt/bnxt_txq.h2
-rw-r--r--drivers/net/bnxt/bnxt_txr.c76
-rw-r--r--drivers/net/bnxt/bnxt_txr.h2
-rw-r--r--drivers/net/bnxt/bnxt_util.h4
-rw-r--r--drivers/net/bnxt/bnxt_vnic.c45
-rw-r--r--drivers/net/bnxt/bnxt_vnic.h7
-rw-r--r--drivers/net/bnxt/hsi_struct_def_dpdk.h270
-rw-r--r--drivers/net/bnxt/rte_pmd_bnxt.c122
-rw-r--r--drivers/net/bonding/rte_eth_bond_8023ad.c69
-rw-r--r--drivers/net/bonding/rte_eth_bond_api.c29
-rw-r--r--drivers/net/bonding/rte_eth_bond_pmd.c253
-rw-r--r--drivers/net/cxgbe/base/adapter.h29
-rw-r--r--drivers/net/cxgbe/base/common.h1
-rw-r--r--drivers/net/cxgbe/base/t4_regs_values.h9
-rw-r--r--drivers/net/cxgbe/base/t4fw_interface.h3
-rw-r--r--drivers/net/cxgbe/cxgbe.h10
-rw-r--r--drivers/net/cxgbe/cxgbe_compat.h55
-rw-r--r--drivers/net/cxgbe/cxgbe_ethdev.c78
-rw-r--r--drivers/net/cxgbe/cxgbe_filter.c230
-rw-r--r--drivers/net/cxgbe/cxgbe_filter.h22
-rw-r--r--drivers/net/cxgbe/cxgbe_flow.c272
-rw-r--r--drivers/net/cxgbe/cxgbe_main.c139
-rw-r--r--drivers/net/cxgbe/cxgbe_pfvf.h22
-rw-r--r--drivers/net/cxgbe/cxgbevf_ethdev.c7
-rw-r--r--drivers/net/cxgbe/cxgbevf_main.c12
-rw-r--r--drivers/net/cxgbe/l2t.c3
-rw-r--r--drivers/net/cxgbe/l2t.h3
-rw-r--r--drivers/net/cxgbe/sge.c21
-rw-r--r--drivers/net/dpaa/dpaa_ethdev.c146
-rw-r--r--drivers/net/dpaa/dpaa_rxtx.c192
-rw-r--r--drivers/net/dpaa2/Makefile3
-rw-r--r--drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h24
-rw-r--r--drivers/net/dpaa2/dpaa2_ethdev.c508
-rw-r--r--drivers/net/dpaa2/dpaa2_ethdev.h51
-rw-r--r--drivers/net/dpaa2/dpaa2_mux.c84
-rw-r--r--drivers/net/dpaa2/dpaa2_ptp.c181
-rw-r--r--drivers/net/dpaa2/dpaa2_rxtx.c284
-rw-r--r--drivers/net/dpaa2/dpaa2_sparser.c269
-rw-r--r--drivers/net/dpaa2/dpaa2_sparser.h206
-rw-r--r--drivers/net/dpaa2/mc/dpni.c117
-rw-r--r--drivers/net/dpaa2/mc/dprtc.c523
-rw-r--r--drivers/net/dpaa2/mc/fsl_dpni.h133
-rw-r--r--drivers/net/dpaa2/mc/fsl_dpni_cmd.h43
-rw-r--r--drivers/net/dpaa2/mc/fsl_dprtc.h109
-rw-r--r--drivers/net/dpaa2/mc/fsl_dprtc_cmd.h91
-rw-r--r--drivers/net/dpaa2/meson.build6
-rw-r--r--drivers/net/e1000/e1000_logs.c48
-rw-r--r--drivers/net/e1000/e1000_logs.h25
-rw-r--r--drivers/net/e1000/em_ethdev.c79
-rw-r--r--drivers/net/e1000/em_rxtx.c5
-rw-r--r--drivers/net/e1000/igb_ethdev.c242
-rw-r--r--drivers/net/ena/Makefile33
-rw-r--r--drivers/net/ena/base/ena_com.c36
-rw-r--r--drivers/net/ena/base/ena_com.h36
-rw-r--r--drivers/net/ena/base/ena_defs/ena_admin_defs.h37
-rw-r--r--drivers/net/ena/base/ena_defs/ena_common_defs.h37
-rw-r--r--drivers/net/ena/base/ena_defs/ena_eth_io_defs.h37
-rw-r--r--drivers/net/ena/base/ena_defs/ena_gen_info.h37
-rw-r--r--drivers/net/ena/base/ena_defs/ena_includes.h5
-rw-r--r--drivers/net/ena/base/ena_defs/ena_regs_defs.h37
-rw-r--r--drivers/net/ena/base/ena_eth_com.c36
-rw-r--r--drivers/net/ena/base/ena_eth_com.h36
-rw-r--r--drivers/net/ena/base/ena_plat.h36
-rw-r--r--drivers/net/ena/base/ena_plat_dpdk.h56
-rw-r--r--drivers/net/ena/ena_ethdev.c211
-rw-r--r--drivers/net/ena/ena_ethdev.h36
-rw-r--r--drivers/net/ena/ena_logs.h54
-rw-r--r--drivers/net/ena/ena_platform.h36
-rw-r--r--drivers/net/enetc/enetc_ethdev.c26
-rw-r--r--drivers/net/enic/enic.h6
-rw-r--r--drivers/net/enic/enic_ethdev.c57
-rw-r--r--drivers/net/enic/enic_main.c15
-rw-r--r--drivers/net/failsafe/failsafe_ether.c16
-rw-r--r--drivers/net/failsafe/failsafe_ops.c130
-rw-r--r--drivers/net/fm10k/fm10k_ethdev.c198
-rw-r--r--drivers/net/fm10k/fm10k_logs.h18
-rw-r--r--drivers/net/hinic/base/hinic_pmd_niccfg.c14
-rw-r--r--drivers/net/hinic/base/hinic_pmd_niccfg.h4
-rw-r--r--drivers/net/hinic/hinic_pmd_ethdev.c45
-rw-r--r--drivers/net/hns3/Makefile45
-rw-r--r--drivers/net/hns3/hns3_cmd.c565
-rw-r--r--drivers/net/hns3/hns3_cmd.h761
-rw-r--r--drivers/net/hns3/hns3_dcb.c1642
-rw-r--r--drivers/net/hns3/hns3_dcb.h166
-rw-r--r--drivers/net/hns3/hns3_ethdev.c4947
-rw-r--r--drivers/net/hns3/hns3_ethdev.h645
-rw-r--r--drivers/net/hns3/hns3_ethdev_vf.c1725
-rw-r--r--drivers/net/hns3/hns3_fdir.c1059
-rw-r--r--drivers/net/hns3/hns3_fdir.h205
-rw-r--r--drivers/net/hns3/hns3_flow.c1903
-rw-r--r--drivers/net/hns3/hns3_intr.c1166
-rw-r--r--drivers/net/hns3/hns3_intr.h79
-rw-r--r--drivers/net/hns3/hns3_logs.h34
-rw-r--r--drivers/net/hns3/hns3_mbx.c353
-rw-r--r--drivers/net/hns3/hns3_mbx.h136
-rw-r--r--drivers/net/hns3/hns3_mp.c214
-rw-r--r--drivers/net/hns3/hns3_mp.h14
-rw-r--r--drivers/net/hns3/hns3_regs.c368
-rw-r--r--drivers/net/hns3/hns3_regs.h99
-rw-r--r--drivers/net/hns3/hns3_rss.c584
-rw-r--r--drivers/net/hns3/hns3_rss.h124
-rw-r--r--drivers/net/hns3/hns3_rxtx.c1676
-rw-r--r--drivers/net/hns3/hns3_rxtx.h317
-rw-r--r--drivers/net/hns3/hns3_stats.c975
-rw-r--r--drivers/net/hns3/hns3_stats.h152
-rw-r--r--drivers/net/hns3/meson.build37
-rw-r--r--drivers/net/hns3/rte_pmd_hns3_version.map3
-rw-r--r--drivers/net/i40e/i40e_ethdev.c300
-rw-r--r--drivers/net/i40e/i40e_ethdev.h32
-rw-r--r--drivers/net/i40e/i40e_ethdev_vf.c89
-rw-r--r--drivers/net/i40e/i40e_logs.h24
-rw-r--r--drivers/net/i40e/i40e_pf.c65
-rw-r--r--drivers/net/i40e/i40e_rxtx.c12
-rw-r--r--drivers/net/i40e/i40e_vf_representor.c24
-rw-r--r--drivers/net/iavf/iavf_ethdev.c85
-rw-r--r--drivers/net/iavf/iavf_log.h19
-rw-r--r--drivers/net/ice/Makefile3
-rw-r--r--drivers/net/ice/base/ice_adminq_cmd.h328
-rw-r--r--drivers/net/ice/base/ice_bitops.h33
-rw-r--r--drivers/net/ice/base/ice_common.c921
-rw-r--r--drivers/net/ice/base/ice_common.h52
-rw-r--r--drivers/net/ice/base/ice_controlq.c63
-rw-r--r--drivers/net/ice/base/ice_controlq.h10
-rw-r--r--drivers/net/ice/base/ice_dcb.c6
-rw-r--r--drivers/net/ice/base/ice_dcb.h1
-rw-r--r--drivers/net/ice/base/ice_devids.h7
-rw-r--r--drivers/net/ice/base/ice_fdir.c461
-rw-r--r--drivers/net/ice/base/ice_fdir.h41
-rw-r--r--drivers/net/ice/base/ice_flex_pipe.c994
-rw-r--r--drivers/net/ice/base/ice_flex_pipe.h20
-rw-r--r--drivers/net/ice/base/ice_flex_type.h37
-rw-r--r--drivers/net/ice/base/ice_flow.c604
-rw-r--r--drivers/net/ice/base/ice_flow.h115
-rw-r--r--drivers/net/ice/base/ice_hw_autogen.h36
-rw-r--r--drivers/net/ice/base/ice_lan_tx_rx.h85
-rw-r--r--drivers/net/ice/base/ice_nvm.c298
-rw-r--r--drivers/net/ice/base/ice_nvm.h91
-rw-r--r--drivers/net/ice/base/ice_osdep.h2
-rw-r--r--drivers/net/ice/base/ice_protocol_type.h56
-rw-r--r--drivers/net/ice/base/ice_sched.c94
-rw-r--r--drivers/net/ice/base/ice_sched.h8
-rw-r--r--drivers/net/ice/base/ice_switch.c843
-rw-r--r--drivers/net/ice/base/ice_switch.h8
-rw-r--r--drivers/net/ice/base/ice_type.h104
-rw-r--r--drivers/net/ice/ice_ethdev.c575
-rw-r--r--drivers/net/ice/ice_ethdev.h12
-rw-r--r--drivers/net/ice/ice_logs.h18
-rw-r--r--drivers/net/ice/ice_rxtx.c303
-rw-r--r--drivers/net/ice/ice_rxtx.h8
-rw-r--r--drivers/net/ice/ice_rxtx_vec_avx2.c221
-rw-r--r--drivers/net/ice/ice_rxtx_vec_common.h3
-rw-r--r--drivers/net/ice/ice_rxtx_vec_sse.c235
-rw-r--r--drivers/net/ice/meson.build2
-rw-r--r--drivers/net/ice/rte_pmd_ice.h152
-rw-r--r--drivers/net/ipn3ke/ipn3ke_ethdev.c86
-rw-r--r--drivers/net/ipn3ke/ipn3ke_ethdev.h14
-rw-r--r--drivers/net/ipn3ke/ipn3ke_representor.c34
-rw-r--r--drivers/net/ixgbe/ixgbe_ethdev.c346
-rw-r--r--drivers/net/ixgbe/ixgbe_logs.h24
-rw-r--r--drivers/net/ixgbe/ixgbe_pf.c19
-rw-r--r--drivers/net/ixgbe/ixgbe_vf_representor.c4
-rw-r--r--drivers/net/kni/rte_eth_kni.c46
-rw-r--r--drivers/net/liquidio/lio_ethdev.c69
-rw-r--r--drivers/net/memif/memif_socket.c29
-rw-r--r--drivers/net/memif/memif_socket.h4
-rw-r--r--drivers/net/memif/rte_eth_memif.c20
-rw-r--r--drivers/net/meson.build2
-rw-r--r--drivers/net/mlx4/mlx4.h14
-rw-r--r--drivers/net/mlx4/mlx4_ethdev.c53
-rw-r--r--drivers/net/mlx4/mlx4_mr.c1
-rw-r--r--drivers/net/mlx4/mlx4_mr.h1
-rw-r--r--drivers/net/mlx5/Makefile10
-rw-r--r--drivers/net/mlx5/meson.build4
-rw-r--r--drivers/net/mlx5/mlx5.c390
-rw-r--r--drivers/net/mlx5/mlx5.h50
-rw-r--r--drivers/net/mlx5/mlx5_defs.h4
-rw-r--r--drivers/net/mlx5/mlx5_ethdev.c216
-rw-r--r--drivers/net/mlx5/mlx5_flow.c131
-rw-r--r--drivers/net/mlx5/mlx5_flow.h32
-rw-r--r--drivers/net/mlx5/mlx5_flow_dv.c725
-rw-r--r--drivers/net/mlx5/mlx5_flow_verbs.c3
-rw-r--r--drivers/net/mlx5/mlx5_glue.c46
-rw-r--r--drivers/net/mlx5/mlx5_glue.h13
-rw-r--r--drivers/net/mlx5/mlx5_mr.c1
-rw-r--r--drivers/net/mlx5/mlx5_mr.h1
-rw-r--r--drivers/net/mlx5/mlx5_nl.c57
-rw-r--r--drivers/net/mlx5/mlx5_prm.h10
-rw-r--r--drivers/net/mlx5/mlx5_rxmode.c76
-rw-r--r--drivers/net/mlx5/mlx5_rxtx.c24
-rw-r--r--drivers/net/mlx5/mlx5_rxtx.h3
-rw-r--r--drivers/net/mlx5/mlx5_rxtx_vec_neon.h2
-rw-r--r--drivers/net/mlx5/mlx5_stats.c19
-rw-r--r--drivers/net/mlx5/mlx5_trigger.c3
-rw-r--r--drivers/net/mlx5/mlx5_txq.c161
-rw-r--r--drivers/net/mvneta/mvneta_ethdev.c37
-rw-r--r--drivers/net/mvpp2/mrvl_ethdev.c76
-rw-r--r--drivers/net/netvsc/hn_ethdev.c52
-rw-r--r--drivers/net/netvsc/hn_var.h14
-rw-r--r--drivers/net/netvsc/hn_vf.c58
-rw-r--r--drivers/net/nfb/meson.build9
-rw-r--r--drivers/net/nfb/nfb_ethdev.c4
-rw-r--r--drivers/net/nfb/nfb_rxmode.c20
-rw-r--r--drivers/net/nfb/nfb_rxmode.h16
-rw-r--r--drivers/net/nfb/nfb_stats.c4
-rw-r--r--drivers/net/nfb/nfb_stats.h5
-rw-r--r--drivers/net/nfp/nfp_net.c44
-rw-r--r--drivers/net/null/rte_eth_null.c19
-rw-r--r--drivers/net/octeontx/octeontx_ethdev.c28
-rw-r--r--drivers/net/octeontx2/otx2_ethdev.c332
-rw-r--r--drivers/net/octeontx2/otx2_ethdev.h22
-rw-r--r--drivers/net/octeontx2/otx2_ethdev_ops.c58
-rw-r--r--drivers/net/octeontx2/otx2_flow_ctrl.c12
-rw-r--r--drivers/net/octeontx2/otx2_flow_parse.c6
-rw-r--r--drivers/net/octeontx2/otx2_lookup.c29
-rw-r--r--drivers/net/octeontx2/otx2_rx.c3
-rw-r--r--drivers/net/octeontx2/otx2_rx.h15
-rw-r--r--drivers/net/octeontx2/otx2_stats.c33
-rw-r--r--drivers/net/octeontx2/otx2_tx.c55
-rw-r--r--drivers/net/octeontx2/otx2_tx.h300
-rw-r--r--drivers/net/octeontx2/otx2_vlan.c20
-rw-r--r--drivers/net/pcap/rte_eth_pcap.c8
-rw-r--r--drivers/net/qede/base/ecore_dev_api.h1
-rw-r--r--drivers/net/qede/base/ecore_l2.c50
-rw-r--r--drivers/net/qede/base/ecore_l2_api.h39
-rw-r--r--drivers/net/qede/qede_ethdev.c382
-rw-r--r--drivers/net/qede/qede_ethdev.h6
-rw-r--r--drivers/net/qede/qede_filter.c27
-rw-r--r--drivers/net/qede/qede_rxtx.c367
-rw-r--r--drivers/net/qede/qede_rxtx.h26
-rw-r--r--drivers/net/ring/rte_eth_ring.c8
-rw-r--r--drivers/net/sfc/sfc_ethdev.c33
-rw-r--r--drivers/net/sfc/sfc_ev.c2
-rw-r--r--drivers/net/softnic/rte_eth_softnic.c4
-rw-r--r--drivers/net/softnic/rte_eth_softnic_link.c5
-rw-r--r--drivers/net/szedata2/meson.build2
-rw-r--r--drivers/net/szedata2/rte_eth_szedata2.c20
-rw-r--r--drivers/net/tap/rte_eth_tap.c112
-rw-r--r--drivers/net/thunderx/nicvf_ethdev.c20
-rw-r--r--drivers/net/vhost/rte_eth_vhost.c49
-rw-r--r--drivers/net/virtio/Makefile2
-rw-r--r--drivers/net/virtio/meson.build2
-rw-r--r--drivers/net/virtio/virtio_ethdev.c60
-rw-r--r--drivers/net/virtio/virtio_rxtx.c194
-rw-r--r--drivers/net/virtio/virtio_rxtx.h2
-rw-r--r--drivers/net/virtio/virtio_rxtx_simple_altivec.c203
-rw-r--r--drivers/net/virtio/virtio_rxtx_simple_neon.c10
-rw-r--r--drivers/net/virtio/virtio_rxtx_simple_sse.c10
-rw-r--r--drivers/net/virtio/virtio_user/vhost_kernel.c1
-rw-r--r--drivers/net/virtio/virtio_user/vhost_user.c1
-rw-r--r--drivers/net/vmxnet3/vmxnet3_ethdev.c40
-rw-r--r--drivers/raw/ifpga/ifpga_rawdev.c1
-rw-r--r--examples/bbdev_app/main.c27
-rw-r--r--examples/bond/main.c80
-rw-r--r--examples/distributor/main.c34
-rw-r--r--examples/ethtool/ethtool-app/main.c26
-rw-r--r--examples/ethtool/lib/rte_ethtool.c34
-rw-r--r--examples/eventdev_pipeline/main.c20
-rw-r--r--examples/eventdev_pipeline/pipeline_worker_tx.c2
-rw-r--r--examples/exception_path/main.c22
-rw-r--r--examples/fips_validation/fips_validation_tdes.c2
-rw-r--r--examples/flow_classify/flow_classify.c17
-rw-r--r--examples/flow_filtering/main.c22
-rw-r--r--examples/ip_fragmentation/main.c39
-rw-r--r--examples/ip_pipeline/cli.c17
-rw-r--r--examples/ip_pipeline/kni.c5
-rw-r--r--examples/ip_pipeline/link.c13
-rw-r--r--examples/ip_reassembly/main.c32
-rw-r--r--examples/ipsec-secgw/ipsec-secgw.c37
-rw-r--r--examples/ipsec-secgw/ipsec.c38
-rw-r--r--examples/ipsec-secgw/sa.c10
-rwxr-xr-xexamples/ipsec-secgw/test/pkttest.py2
-rw-r--r--examples/ipv4_multicast/main.c30
-rw-r--r--examples/kni/main.c60
-rw-r--r--examples/l2fwd-cat/l2fwd-cat.c9
-rw-r--r--examples/l2fwd-crypto/main.c34
-rw-r--r--examples/l2fwd-jobstats/main.c34
-rw-r--r--examples/l2fwd-keepalive/main.c31
-rw-r--r--examples/l2fwd/main.c31
-rw-r--r--examples/l3fwd-acl/main.c48
-rw-r--r--examples/l3fwd-power/main.c48
-rw-r--r--examples/l3fwd-vf/main.c7
-rw-r--r--examples/l3fwd/main.c40
-rw-r--r--examples/link_status_interrupt/main.c46
-rw-r--r--examples/load_balancer/init.c23
-rw-r--r--examples/multi_process/client_server_mp/mp_server/init.c14
-rw-r--r--examples/multi_process/client_server_mp/mp_server/main.c8
-rw-r--r--examples/multi_process/symmetric_mp/main.c22
-rw-r--r--examples/netmap_compat/bridge/bridge.c6
-rw-r--r--examples/netmap_compat/lib/compat_netmap.c9
-rw-r--r--examples/packet_ordering/main.c20
-rw-r--r--examples/performance-thread/l3fwd-thread/main.c41
-rw-r--r--examples/ptpclient/ptpclient.c27
-rw-r--r--examples/qos_meter/main.c30
-rw-r--r--examples/qos_sched/init.c27
-rw-r--r--examples/quota_watermark/qw/init.c6
-rw-r--r--examples/quota_watermark/qw/main.c10
-rw-r--r--examples/rxtx_callbacks/main.c21
-rw-r--r--examples/server_node_efd/server/init.c19
-rw-r--r--examples/server_node_efd/server/main.c9
-rw-r--r--examples/skeleton/basicfwd.c17
-rw-r--r--examples/tep_termination/vxlan_setup.c11
-rw-r--r--examples/vhost/main.c29
-rw-r--r--examples/vhost_scsi/Makefile1
-rw-r--r--examples/vhost_scsi/meson.build1
-rw-r--r--examples/vm_power_manager/guest_cli/main.c11
-rw-r--r--examples/vm_power_manager/guest_cli/vm_power_cli_guest.c17
-rw-r--r--examples/vm_power_manager/guest_cli/vm_power_cli_guest.h2
-rw-r--r--examples/vm_power_manager/main.c30
-rw-r--r--examples/vmdq/main.c23
-rw-r--r--examples/vmdq_dcb/main.c25
-rw-r--r--kernel/linux/kni/kni_net.c27
-rw-r--r--lib/librte_acl/rte_acl.c1
-rw-r--r--lib/librte_acl/rte_acl_osdep.h1
-rw-r--r--lib/librte_bpf/Makefile2
-rw-r--r--lib/librte_bpf/bpf.c4
-rw-r--r--lib/librte_bpf/bpf_impl.h3
-rw-r--r--lib/librte_bpf/bpf_jit_arm64.c1451
-rw-r--r--lib/librte_bpf/bpf_validate.c12
-rw-r--r--lib/librte_bpf/meson.build2
-rw-r--r--lib/librte_bpf/rte_bpf.h2
-rw-r--r--lib/librte_cryptodev/rte_cryptodev.c12
-rw-r--r--lib/librte_eal/common/arch/ppc_64/rte_cycles.c4
-rw-r--r--lib/librte_eal/common/eal_common_memalloc.c1
-rw-r--r--lib/librte_eal/common/eal_common_memzone.c1
-rw-r--r--lib/librte_eal/common/eal_memalloc.h1
-rw-r--r--lib/librte_eal/common/eal_memcfg.h1
-rw-r--r--lib/librte_eal/common/include/arch/ppc_64/rte_atomic.h2
-rw-r--r--lib/librte_eal/common/malloc_elem.h2
-rw-r--r--lib/librte_eal/common/rte_service.c43
-rw-r--r--lib/librte_eal/freebsd/eal/eal.c2
-rw-r--r--lib/librte_eal/freebsd/eal/eal_memory.c1
-rw-r--r--lib/librte_eal/linux/eal/eal.c2
-rw-r--r--lib/librte_eal/linux/eal/eal_memalloc.c1
-rw-r--r--lib/librte_eal/linux/eal/eal_memory.c1
-rw-r--r--lib/librte_eal/linux/eal/eal_timer.c36
-rw-r--r--lib/librte_eal/linux/eal/eal_vfio.c16
-rw-r--r--lib/librte_eal/linux/eal/include/rte_kni_common.h2
-rw-r--r--lib/librte_ethdev/rte_ethdev.c263
-rw-r--r--lib/librte_ethdev/rte_ethdev.h64
-rw-r--r--lib/librte_ethdev/rte_ethdev_core.h152
-rw-r--r--lib/librte_ethdev/rte_flow.c5
-rw-r--r--lib/librte_ethdev/rte_flow.h99
-rw-r--r--lib/librte_eventdev/Makefile2
-rw-r--r--lib/librte_eventdev/meson.build2
-rw-r--r--lib/librte_eventdev/rte_event_eth_tx_adapter.h19
-rw-r--r--lib/librte_eventdev/rte_eventdev.c1
-rw-r--r--lib/librte_eventdev/rte_eventdev.h10
-rw-r--r--lib/librte_ipsec/esp_inb.c14
-rw-r--r--lib/librte_ipsec/esp_outb.c8
-rw-r--r--lib/librte_kni/rte_kni.c43
-rw-r--r--lib/librte_kni/rte_kni.h3
-rw-r--r--lib/librte_latencystats/rte_latencystats.c23
-rw-r--r--lib/librte_mbuf/rte_mbuf.c153
-rw-r--r--lib/librte_mbuf/rte_mbuf.h129
-rw-r--r--lib/librte_mbuf/rte_mbuf_version.map10
-rw-r--r--lib/librte_mempool/rte_mempool.c50
-rw-r--r--lib/librte_net/rte_esp.h2
-rw-r--r--lib/librte_pdump/rte_pdump.c9
-rw-r--r--lib/librte_rcu/rte_rcu_qsbr.c5
-rw-r--r--lib/librte_security/rte_security.h50
-rw-r--r--lib/librte_vhost/rte_vhost.h11
-rw-r--r--lib/librte_vhost/vhost.c53
-rw-r--r--lib/librte_vhost/vhost.h15
-rw-r--r--lib/librte_vhost/vhost_user.c82
-rw-r--r--mk/rte.app.mk4
650 files changed, 67745 insertions, 12606 deletions
diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index d5ad919..6075c44 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -19,14 +19,14 @@ if [ "$AARCH64" = "1" ]; then
OPTS="$OPTS --cross-file config/arm/arm64_armv8_linux_gcc"
fi
+if [ "$BUILD_DOCS" = "1" ]; then
+ OPTS="$OPTS -Denable_docs=true"
+fi
+
OPTS="$OPTS --default-library=$DEF_LIB"
meson build --werror -Dexamples=all $OPTS
ninja -C build
-if [ "$BUILD_DOCS" = "1" ]; then
- ninja -C build doc
-fi
-
if [ "$RUN_TESTS" = "1" ]; then
sudo meson test -C build --suite fast-tests -t 3
fi
diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh
index a40e62e..dfb9d4a 100755
--- a/.ci/linux-setup.sh
+++ b/.ci/linux-setup.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/sh -xe
# need to install as 'root' since some of the unit tests won't run without it
sudo python3 -m pip install --upgrade meson
diff --git a/.travis.yml b/.travis.yml
index 781f9f6..3d6ef29 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -23,6 +23,9 @@ extra_packages: &extra_packages
- *required_packages
- [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
+doc_packages: &doc_packages
+ - [doxygen, graphviz, python3-sphinx]
+
before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh
env:
@@ -30,7 +33,7 @@ env:
- DEF_LIB="shared"
- DEF_LIB="static" OPTS="-Denable_kmods=false"
- DEF_LIB="shared" OPTS="-Denable_kmods=false"
- - DEF_LIB="shared" RUN_TESTS=1 BUILD_DOCS=1
+ - DEF_LIB="shared" RUN_TESTS=1
matrix:
include:
@@ -58,6 +61,7 @@ matrix:
apt:
packages:
- *extra_packages
+ - *doc_packages
- env: DEF_LIB="static" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
compiler: gcc
addons:
@@ -88,6 +92,7 @@ matrix:
apt:
packages:
- *extra_packages
+ - *doc_packages
- env: DEF_LIB="static" OPTS="-Denable_kmods=false" EXTRA_PACKAGES=1
compiler: clang
addons:
diff --git a/MAINTAINERS b/MAINTAINERS
index b3d9aad..f8a56e2 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -24,7 +24,7 @@ General Project Administration
Main Branch
M: Thomas Monjalon <thomas@monjalon.net>
-M: Ferruh Yigit <ferruh.yigit@intel.com>
+M: David Marchand <david.marchand@redhat.com>
T: git://dpdk.org/dpdk
Next-net Tree
@@ -251,6 +251,7 @@ M: Gavin Hu <gavin.hu@arm.com>
F: lib/librte_eal/common/include/arch/arm/*_64.h
F: lib/librte_net/net_crc_neon.h
F: lib/librte_acl/acl_run_neon.*
+F: lib/librte_bpf/bpf_jit_arm64.c
F: lib/librte_lpm/rte_lpm_neon.h
F: lib/librte_hash/rte*_arm64.h
F: lib/librte_efd/rte*_arm64.h
@@ -535,6 +536,7 @@ M: Marcin Wojtas <mw@semihalf.com>
M: Michal Krawczyk <mk@semihalf.com>
M: Guy Tzalik <gtzalik@amazon.com>
M: Evgeny Schemeilin <evgenys@amazon.com>
+M: Igor Chauskin <igorch@amazon.com>
F: drivers/net/ena/
F: doc/guides/nics/ena.rst
F: doc/guides/nics/features/ena.ini
@@ -605,6 +607,14 @@ F: drivers/net/enic/
F: doc/guides/nics/enic.rst
F: doc/guides/nics/features/enic.ini
+Hisilicon hns3
+M: Wei Hu (Xavier) <xavier.huwei@huawei.com>
+M: Min Hu (Connor) <humin29@huawei.com>
+M: Yisen Zhuang <yisen.zhuang@huawei.com>
+F: drivers/net/hns3/
+F: doc/guides/nics/hns3.rst
+F: doc/guides/nics/features/hns3.ini
+
Huawei hinic
M: Ziyang Xuan <xuanziyang2@huawei.com>
M: Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>
@@ -963,6 +973,13 @@ F: drivers/crypto/mvsam/
F: doc/guides/cryptodevs/mvsam.rst
F: doc/guides/cryptodevs/features/mvsam.ini
+Marvell Nitrox
+M: Nagadheeraj Rottela <rnagadheeraj@marvell.com>
+M: Srikanth Jampala <jsrikanth@marvell.com>
+F: drivers/crypto/nitrox/
+F: doc/guides/cryptodevs/nitrox.rst
+F: doc/guides/cryptodevs/features/nitrox.ini
+
Null Crypto
M: Declan Doherty <declan.doherty@intel.com>
F: drivers/crypto/null/
diff --git a/app/pdump/main.c b/app/pdump/main.c
index c1b9012..903d02f 100644
--- a/app/pdump/main.c
+++ b/app/pdump/main.c
@@ -606,7 +606,10 @@ configure_vdev(uint16_t port_id)
if (ret < 0)
rte_exit(EXIT_FAILURE, "dev start failed\n");
- rte_eth_macaddr_get(port_id, &addr);
+ ret = rte_eth_macaddr_get(port_id, &addr);
+ if (ret != 0)
+ rte_exit(EXIT_FAILURE, "macaddr get failed\n");
+
printf("Port %u MAC: %02"PRIx8" %02"PRIx8" %02"PRIx8
" %02"PRIx8" %02"PRIx8" %02"PRIx8"\n",
port_id,
@@ -614,7 +617,13 @@ configure_vdev(uint16_t port_id)
addr.addr_bytes[2], addr.addr_bytes[3],
addr.addr_bytes[4], addr.addr_bytes[5]);
- rte_eth_promiscuous_enable(port_id);
+ ret = rte_eth_promiscuous_enable(port_id);
+ if (ret != 0) {
+ rte_exit(EXIT_FAILURE,
+ "promiscuous mode enable failed: %s\n",
+ rte_strerror(-ret));
+ return ret;
+ }
return 0;
}
diff --git a/app/proc-info/main.c b/app/proc-info/main.c
index a89b51b..a3f854b 100644
--- a/app/proc-info/main.c
+++ b/app/proc-info/main.c
@@ -580,8 +580,16 @@ err:
static void
nic_xstats_clear(uint16_t port_id)
{
+ int ret;
+
printf("\n Clearing NIC xstats for port %d\n", port_id);
- rte_eth_xstats_reset(port_id);
+ ret = rte_eth_xstats_reset(port_id);
+ if (ret != 0) {
+ printf("\n Error clearing xstats for port %d: %s\n", port_id,
+ strerror(-ret));
+ return;
+ }
+
printf("\n NIC extended statistics for port %d cleared\n", port_id);
}
@@ -670,20 +678,30 @@ show_port(void)
printf(" - generic config\n");
printf("\t -- Socket %d\n", rte_eth_dev_socket_id(i));
- rte_eth_link_get(i, &link);
- printf("\t -- link speed %d duplex %d,"
- " auto neg %d status %d\n",
- link.link_speed,
- link.link_duplex,
- link.link_autoneg,
- link.link_status);
+ ret = rte_eth_link_get(i, &link);
+ if (ret < 0) {
+ printf("Link get failed (port %u): %s\n",
+ i, rte_strerror(-ret));
+ } else {
+ printf("\t -- link speed %d duplex %d,"
+ " auto neg %d status %d\n",
+ link.link_speed,
+ link.link_duplex,
+ link.link_autoneg,
+ link.link_status);
+ }
printf("\t -- promiscuous (%d)\n",
rte_eth_promiscuous_get(i));
ret = rte_eth_dev_get_mtu(i, &mtu);
if (ret == 0)
printf("\t -- mtu (%d)\n", mtu);
- rte_eth_dev_info_get(i, &dev_info);
+ ret = rte_eth_dev_info_get(i, &dev_info);
+ if (ret != 0) {
+ printf("Error during getting device (port %u) info: %s\n",
+ i, strerror(-ret));
+ return;
+ }
printf(" - queue\n");
for (j = 0; j < dev_info.nb_rx_queues; j++) {
@@ -836,7 +854,13 @@ show_tm(void)
memset(&cap, 0, sizeof(cap));
memset(&error, 0, sizeof(error));
- rte_eth_dev_info_get(i, &dev_info);
+ ret = rte_eth_dev_info_get(i, &dev_info);
+ if (ret != 0) {
+ printf("Error during getting device (port %u) info: %s\n",
+ i, strerror(-ret));
+ return;
+ }
+
printf(" - Generic for port (%u)\n"
"\t -- driver name %s\n"
"\t -- max vf (%u)\n"
diff --git a/app/test-bbdev/Makefile b/app/test-bbdev/Makefile
index 6da0c8e..c53982f 100644
--- a/app/test-bbdev/Makefile
+++ b/app/test-bbdev/Makefile
@@ -21,5 +21,8 @@ SRCS-$(CONFIG_RTE_TEST_BBDEV) += test_bbdev_perf.c
SRCS-$(CONFIG_RTE_TEST_BBDEV) += test_bbdev_vector.c
LDLIBS += -lm
+ifeq ($(CONFIG_RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC),y)
+LDLIBS += -lrte_pmd_bbdev_fpga_lte_fec
+endif
include $(RTE_SDK)/mk/rte.app.mk
diff --git a/app/test-bbdev/meson.build b/app/test-bbdev/meson.build
index d3f2b77..4f53a2e 100644
--- a/app/test-bbdev/meson.build
+++ b/app/test-bbdev/meson.build
@@ -7,6 +7,6 @@ sources = files('main.c',
'test_bbdev_vector.c')
allow_experimental_apis = true
deps += ['bbdev', 'bus_vdev']
-if dpdk_conf.has('RTE_LIBRTE_PMD_FPGA_LTE_FEC')
- deps += ['bbdev_fpga_lte_fec']
-endif \ No newline at end of file
+if dpdk_conf.has('RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC')
+ deps += ['pmd_bbdev_fpga_lte_fec']
+endif
diff --git a/app/test-bbdev/test_bbdev_perf.c b/app/test-bbdev/test_bbdev_perf.c
index 7ab61ef..d8db58e 100644
--- a/app/test-bbdev/test_bbdev_perf.c
+++ b/app/test-bbdev/test_bbdev_perf.c
@@ -18,7 +18,7 @@
#include <rte_hexdump.h>
#include <rte_interrupts.h>
-#ifdef RTE_LIBRTE_PMD_FPGA_LTE_FEC
+#ifdef RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC
#include <fpga_lte_fec.h>
#endif
@@ -30,7 +30,7 @@
#define MAX_QUEUES RTE_MAX_LCORE
#define TEST_REPETITIONS 1000
-#ifdef RTE_LIBRTE_PMD_FPGA_LTE_FEC
+#ifdef RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC
#define FPGA_PF_DRIVER_NAME ("intel_fpga_lte_fec_pf")
#define FPGA_VF_DRIVER_NAME ("intel_fpga_lte_fec_vf")
#define VF_UL_QUEUE_VALUE 4
@@ -519,8 +519,7 @@ add_bbdev_dev(uint8_t dev_id, struct rte_bbdev_info *info,
/* Configure fpga lte fec with PF & VF values
* if '-i' flag is set and using fpga device
*/
-#ifndef RTE_BUILD_SHARED_LIB
-#ifdef RTE_LIBRTE_PMD_FPGA_LTE_FEC
+#ifdef RTE_LIBRTE_PMD_BBDEV_FPGA_LTE_FEC
if ((get_init_device() == true) &&
(!strcmp(info->drv.driver_name, FPGA_PF_DRIVER_NAME))) {
struct fpga_lte_fec_conf conf;
@@ -564,7 +563,6 @@ add_bbdev_dev(uint8_t dev_id, struct rte_bbdev_info *info,
info->dev_name);
}
#endif
-#endif
nb_queues = RTE_MIN(rte_lcore_count(), info->drv.max_num_queues);
nb_queues = RTE_MIN(nb_queues, (unsigned int) MAX_QUEUES);
diff --git a/app/test-compress-perf/comp_perf_options.h b/app/test-compress-perf/comp_perf_options.h
index 651cbea..2c26511 100644
--- a/app/test-compress-perf/comp_perf_options.h
+++ b/app/test-compress-perf/comp_perf_options.h
@@ -11,7 +11,7 @@
#define MAX_MBUF_DATA_SIZE (UINT16_MAX - RTE_PKTMBUF_HEADROOM)
#define MAX_SEG_SIZE ((int)(MAX_MBUF_DATA_SIZE / EXPANSE_RATIO))
-extern const char *cperf_test_type_strs[];
+extern const char *comp_perf_test_type_strs[];
/* Cleanup state machine */
enum cleanup_st {
@@ -56,12 +56,14 @@ struct comp_test_data {
uint32_t pool_sz;
uint32_t num_iter;
uint16_t max_sgl_segs;
+ uint32_t total_segs;
enum rte_comp_huffman huffman_enc;
enum comp_operation test_op;
int window_sz;
struct range_list level_lst;
uint8_t level;
+ int use_external_mbufs;
double ratio;
enum cleanup_st cleanup;
diff --git a/app/test-compress-perf/comp_perf_options_parse.c b/app/test-compress-perf/comp_perf_options_parse.c
index 01e19ea..12d0a6c 100644
--- a/app/test-compress-perf/comp_perf_options_parse.c
+++ b/app/test-compress-perf/comp_perf_options_parse.c
@@ -28,6 +28,7 @@
#define CPERF_HUFFMAN_ENC ("huffman-enc")
#define CPERF_LEVEL ("compress-level")
#define CPERF_WINDOW_SIZE ("window-sz")
+#define CPERF_EXTERNAL_MBUFS ("external-mbufs")
struct name_id_map {
const char *name;
@@ -58,6 +59,8 @@ usage(char *progname)
" (default: range between 1 and 9)\n"
" --window-sz N: base two log value of compression window size\n"
" (e.g.: 15 => 32k, default: max supported by PMD)\n"
+ " --external-mbufs: use memzones as external buffers instead of\n"
+ " keeping the data directly in mbuf area\n"
" -h: prints this help\n",
progname);
}
@@ -82,11 +85,11 @@ parse_cperf_test_type(struct comp_test_data *test_data, const char *arg)
{
struct name_id_map cperftest_namemap[] = {
{
- cperf_test_type_strs[CPERF_TEST_TYPE_BENCHMARK],
+ comp_perf_test_type_strs[CPERF_TEST_TYPE_BENCHMARK],
CPERF_TEST_TYPE_BENCHMARK
},
{
- cperf_test_type_strs[CPERF_TEST_TYPE_VERIFY],
+ comp_perf_test_type_strs[CPERF_TEST_TYPE_VERIFY],
CPERF_TEST_TYPE_VERIFY
}
};
@@ -520,6 +523,14 @@ parse_level(struct comp_test_data *test_data, const char *arg)
return 0;
}
+static int
+parse_external_mbufs(struct comp_test_data *test_data,
+ const char *arg __rte_unused)
+{
+ test_data->use_external_mbufs = 1;
+ return 0;
+}
+
typedef int (*option_parser_t)(struct comp_test_data *test_data,
const char *arg);
@@ -544,8 +555,10 @@ static struct option lgopts[] = {
{ CPERF_HUFFMAN_ENC, required_argument, 0, 0 },
{ CPERF_LEVEL, required_argument, 0, 0 },
{ CPERF_WINDOW_SIZE, required_argument, 0, 0 },
+ { CPERF_EXTERNAL_MBUFS, 0, 0, 0 },
{ NULL, 0, 0, 0 }
};
+
static int
comp_perf_opts_parse_long(int opt_idx, struct comp_test_data *test_data)
{
@@ -563,6 +576,7 @@ comp_perf_opts_parse_long(int opt_idx, struct comp_test_data *test_data)
{ CPERF_HUFFMAN_ENC, parse_huffman_enc },
{ CPERF_LEVEL, parse_level },
{ CPERF_WINDOW_SIZE, parse_window_sz },
+ { CPERF_EXTERNAL_MBUFS, parse_external_mbufs },
};
unsigned int i;
@@ -618,6 +632,7 @@ comp_perf_options_default(struct comp_test_data *test_data)
test_data->level_lst.max = RTE_COMP_LEVEL_MAX;
test_data->level_lst.inc = 1;
test_data->test = CPERF_TEST_TYPE_BENCHMARK;
+ test_data->use_external_mbufs = 0;
}
int
diff --git a/app/test-compress-perf/comp_perf_test_benchmark.c b/app/test-compress-perf/comp_perf_test_benchmark.c
index 8874594..0c6bb9b 100644
--- a/app/test-compress-perf/comp_perf_test_benchmark.c
+++ b/app/test-compress-perf/comp_perf_test_benchmark.c
@@ -15,7 +15,8 @@ cperf_benchmark_test_destructor(void *arg)
{
if (arg) {
comp_perf_free_memory(
- &((struct cperf_benchmark_ctx *)arg)->ver.mem);
+ ((struct cperf_benchmark_ctx *)arg)->ver.options,
+ &((struct cperf_benchmark_ctx *)arg)->ver.mem);
rte_free(arg);
}
}
diff --git a/app/test-compress-perf/comp_perf_test_common.c b/app/test-compress-perf/comp_perf_test_common.c
index 6edc40f..1b8985b 100644
--- a/app/test-compress-perf/comp_perf_test_common.c
+++ b/app/test-compress-perf/comp_perf_test_common.c
@@ -77,14 +77,18 @@ find_buf_size(uint32_t input_size)
}
void
-comp_perf_free_memory(struct cperf_mem_resources *mem)
+comp_perf_free_memory(struct comp_test_data *test_data,
+ struct cperf_mem_resources *mem)
{
uint32_t i;
- for (i = 0; i < mem->total_bufs; i++) {
- rte_pktmbuf_free(mem->comp_bufs[i]);
- rte_pktmbuf_free(mem->decomp_bufs[i]);
- }
+ if (mem->decomp_bufs != NULL)
+ for (i = 0; i < mem->total_bufs; i++)
+ rte_pktmbuf_free(mem->decomp_bufs[i]);
+
+ if (mem->comp_bufs != NULL)
+ for (i = 0; i < mem->total_bufs; i++)
+ rte_pktmbuf_free(mem->comp_bufs[i]);
rte_free(mem->decomp_bufs);
rte_free(mem->comp_bufs);
@@ -93,26 +97,162 @@ comp_perf_free_memory(struct cperf_mem_resources *mem)
rte_mempool_free(mem->op_pool);
rte_mempool_free(mem->decomp_buf_pool);
rte_mempool_free(mem->comp_buf_pool);
+
+ /* external mbuf support */
+ if (mem->decomp_memzones != NULL) {
+ for (i = 0; i < test_data->total_segs; i++)
+ rte_memzone_free(mem->decomp_memzones[i]);
+ rte_free(mem->decomp_memzones);
+ }
+ if (mem->comp_memzones != NULL) {
+ for (i = 0; i < test_data->total_segs; i++)
+ rte_memzone_free(mem->comp_memzones[i]);
+ rte_free(mem->comp_memzones);
+ }
+ rte_free(mem->decomp_buf_infos);
+ rte_free(mem->comp_buf_infos);
+}
+
+static void
+comp_perf_extbuf_free_cb(void *addr __rte_unused, void *opaque __rte_unused)
+{
+}
+
+static const struct rte_memzone *
+comp_perf_make_memzone(const char *name, struct cperf_mem_resources *mem,
+ unsigned int number, size_t size)
+{
+ unsigned int socket_id = rte_socket_id();
+ char mz_name[RTE_MEMZONE_NAMESIZE];
+ const struct rte_memzone *memzone;
+
+ snprintf(mz_name, RTE_MEMZONE_NAMESIZE, "%s_s%u_d%u_q%u_%d", name,
+ socket_id, mem->dev_id, mem->qp_id, number);
+ memzone = rte_memzone_lookup(mz_name);
+ if (memzone != NULL && memzone->len != size) {
+ rte_memzone_free(memzone);
+ memzone = NULL;
+ }
+ if (memzone == NULL) {
+ memzone = rte_memzone_reserve_aligned(mz_name, size, socket_id,
+ RTE_MEMZONE_IOVA_CONTIG, RTE_CACHE_LINE_SIZE);
+ if (memzone == NULL)
+ RTE_LOG(ERR, USER1, "Can't allocate memory zone %s\n",
+ mz_name);
+ }
+ return memzone;
+}
+
+static int
+comp_perf_allocate_external_mbufs(struct comp_test_data *test_data,
+ struct cperf_mem_resources *mem)
+{
+ uint32_t i;
+
+ mem->comp_memzones = rte_zmalloc_socket(NULL,
+ test_data->total_segs * sizeof(struct rte_memzone *),
+ 0, rte_socket_id());
+
+ if (mem->comp_memzones == NULL) {
+ RTE_LOG(ERR, USER1,
+ "Memory to hold the compression memzones could not be allocated\n");
+ return -1;
+ }
+
+ mem->decomp_memzones = rte_zmalloc_socket(NULL,
+ test_data->total_segs * sizeof(struct rte_memzone *),
+ 0, rte_socket_id());
+
+ if (mem->decomp_memzones == NULL) {
+ RTE_LOG(ERR, USER1,
+ "Memory to hold the decompression memzones could not be allocated\n");
+ return -1;
+ }
+
+ mem->comp_buf_infos = rte_zmalloc_socket(NULL,
+ test_data->total_segs * sizeof(struct rte_mbuf_ext_shared_info),
+ 0, rte_socket_id());
+
+ if (mem->comp_buf_infos == NULL) {
+ RTE_LOG(ERR, USER1,
+ "Memory to hold the compression buf infos could not be allocated\n");
+ return -1;
+ }
+
+ mem->decomp_buf_infos = rte_zmalloc_socket(NULL,
+ test_data->total_segs * sizeof(struct rte_mbuf_ext_shared_info),
+ 0, rte_socket_id());
+
+ if (mem->decomp_buf_infos == NULL) {
+ RTE_LOG(ERR, USER1,
+ "Memory to hold the decompression buf infos could not be allocated\n");
+ return -1;
+ }
+
+ for (i = 0; i < test_data->total_segs; i++) {
+ mem->comp_memzones[i] = comp_perf_make_memzone("comp", mem,
+ i, test_data->out_seg_sz);
+ if (mem->comp_memzones[i] == NULL) {
+ RTE_LOG(ERR, USER1,
+ "Memory to hold the compression memzone could not be allocated\n");
+ return -1;
+ }
+
+ mem->decomp_memzones[i] = comp_perf_make_memzone("decomp", mem,
+ i, test_data->seg_sz);
+ if (mem->decomp_memzones[i] == NULL) {
+ RTE_LOG(ERR, USER1,
+ "Memory to hold the decompression memzone could not be allocated\n");
+ return -1;
+ }
+
+ mem->comp_buf_infos[i].free_cb =
+ comp_perf_extbuf_free_cb;
+ mem->comp_buf_infos[i].fcb_opaque = NULL;
+ rte_mbuf_ext_refcnt_set(&mem->comp_buf_infos[i], 1);
+
+ mem->decomp_buf_infos[i].free_cb =
+ comp_perf_extbuf_free_cb;
+ mem->decomp_buf_infos[i].fcb_opaque = NULL;
+ rte_mbuf_ext_refcnt_set(&mem->decomp_buf_infos[i], 1);
+ }
+
+ return 0;
}
int
comp_perf_allocate_memory(struct comp_test_data *test_data,
struct cperf_mem_resources *mem)
{
+ uint16_t comp_mbuf_size;
+ uint16_t decomp_mbuf_size;
+
test_data->out_seg_sz = find_buf_size(test_data->seg_sz);
+
/* Number of segments for input and output
* (compression and decompression)
*/
- uint32_t total_segs = DIV_CEIL(test_data->input_data_sz,
+ test_data->total_segs = DIV_CEIL(test_data->input_data_sz,
test_data->seg_sz);
+
+ if (test_data->use_external_mbufs != 0) {
+ if (comp_perf_allocate_external_mbufs(test_data, mem) < 0)
+ return -1;
+ comp_mbuf_size = 0;
+ decomp_mbuf_size = 0;
+ } else {
+ comp_mbuf_size = test_data->out_seg_sz + RTE_PKTMBUF_HEADROOM;
+ decomp_mbuf_size = test_data->seg_sz + RTE_PKTMBUF_HEADROOM;
+ }
+
char pool_name[32] = "";
snprintf(pool_name, sizeof(pool_name), "comp_buf_pool_%u_qp_%u",
mem->dev_id, mem->qp_id);
mem->comp_buf_pool = rte_pktmbuf_pool_create(pool_name,
- total_segs,
+ test_data->total_segs,
0, 0,
- test_data->out_seg_sz + RTE_PKTMBUF_HEADROOM,
+ comp_mbuf_size,
rte_socket_id());
if (mem->comp_buf_pool == NULL) {
RTE_LOG(ERR, USER1, "Mbuf mempool could not be created\n");
@@ -122,15 +262,17 @@ comp_perf_allocate_memory(struct comp_test_data *test_data,
snprintf(pool_name, sizeof(pool_name), "decomp_buf_pool_%u_qp_%u",
mem->dev_id, mem->qp_id);
mem->decomp_buf_pool = rte_pktmbuf_pool_create(pool_name,
- total_segs,
- 0, 0, test_data->seg_sz + RTE_PKTMBUF_HEADROOM,
+ test_data->total_segs,
+ 0, 0,
+ decomp_mbuf_size,
rte_socket_id());
if (mem->decomp_buf_pool == NULL) {
RTE_LOG(ERR, USER1, "Mbuf mempool could not be created\n");
return -1;
}
- mem->total_bufs = DIV_CEIL(total_segs, test_data->max_sgl_segs);
+ mem->total_bufs = DIV_CEIL(test_data->total_segs,
+ test_data->max_sgl_segs);
snprintf(pool_name, sizeof(pool_name), "op_pool_%u_qp_%u",
mem->dev_id, mem->qp_id);
@@ -148,7 +290,8 @@ comp_perf_allocate_memory(struct comp_test_data *test_data,
*/
mem->compressed_data = rte_zmalloc_socket(NULL,
RTE_MAX(
- (size_t) test_data->out_seg_sz * total_segs,
+ (size_t) test_data->out_seg_sz *
+ test_data->total_segs,
(size_t) MIN_COMPRESSED_BUF_SIZE),
0,
rte_socket_id());
@@ -185,7 +328,7 @@ comp_perf_allocate_memory(struct comp_test_data *test_data,
return -1;
}
- buffer_info.total_segments = total_segs;
+ buffer_info.total_segments = test_data->total_segs;
buffer_info.segment_sz = test_data->seg_sz;
buffer_info.total_buffs = mem->total_bufs;
buffer_info.segments_per_buff = test_data->max_sgl_segs;
@@ -203,6 +346,8 @@ prepare_bufs(struct comp_test_data *test_data, struct cperf_mem_resources *mem)
uint8_t *data_addr;
uint32_t i, j;
uint16_t segs_per_mbuf = 0;
+ uint32_t cmz = 0;
+ uint32_t dmz = 0;
for (i = 0; i < mem->total_bufs; i++) {
/* Allocate data in input mbuf and copy data from input file */
@@ -214,6 +359,16 @@ prepare_bufs(struct comp_test_data *test_data, struct cperf_mem_resources *mem)
}
data_sz = RTE_MIN(remaining_data, test_data->seg_sz);
+
+ if (test_data->use_external_mbufs != 0) {
+ rte_pktmbuf_attach_extbuf(mem->decomp_bufs[i],
+ mem->decomp_memzones[dmz]->addr,
+ mem->decomp_memzones[dmz]->iova,
+ test_data->seg_sz,
+ &mem->decomp_buf_infos[dmz]);
+ dmz++;
+ }
+
data_addr = (uint8_t *) rte_pktmbuf_append(
mem->decomp_bufs[i], data_sz);
if (data_addr == NULL) {
@@ -241,6 +396,17 @@ prepare_bufs(struct comp_test_data *test_data, struct cperf_mem_resources *mem)
}
data_sz = RTE_MIN(remaining_data, test_data->seg_sz);
+
+ if (test_data->use_external_mbufs != 0) {
+ rte_pktmbuf_attach_extbuf(
+ next_seg,
+ mem->decomp_memzones[dmz]->addr,
+ mem->decomp_memzones[dmz]->iova,
+ test_data->seg_sz,
+ &mem->decomp_buf_infos[dmz]);
+ dmz++;
+ }
+
data_addr = (uint8_t *)rte_pktmbuf_append(next_seg,
data_sz);
@@ -268,6 +434,16 @@ prepare_bufs(struct comp_test_data *test_data, struct cperf_mem_resources *mem)
RTE_LOG(ERR, USER1, "Could not allocate mbuf\n");
return -1;
}
+
+ if (test_data->use_external_mbufs != 0) {
+ rte_pktmbuf_attach_extbuf(mem->comp_bufs[i],
+ mem->comp_memzones[cmz]->addr,
+ mem->comp_memzones[cmz]->iova,
+ test_data->out_seg_sz,
+ &mem->comp_buf_infos[cmz]);
+ cmz++;
+ }
+
data_addr = (uint8_t *) rte_pktmbuf_append(
mem->comp_bufs[i],
test_data->out_seg_sz);
@@ -287,6 +463,16 @@ prepare_bufs(struct comp_test_data *test_data, struct cperf_mem_resources *mem)
return -1;
}
+ if (test_data->use_external_mbufs != 0) {
+ rte_pktmbuf_attach_extbuf(
+ next_seg,
+ mem->comp_memzones[cmz]->addr,
+ mem->comp_memzones[cmz]->iova,
+ test_data->out_seg_sz,
+ &mem->comp_buf_infos[cmz]);
+ cmz++;
+ }
+
data_addr = (uint8_t *)rte_pktmbuf_append(next_seg,
test_data->out_seg_sz);
if (data_addr == NULL) {
diff --git a/app/test-compress-perf/comp_perf_test_common.h b/app/test-compress-perf/comp_perf_test_common.h
index c9e0c90..9206428 100644
--- a/app/test-compress-perf/comp_perf_test_common.h
+++ b/app/test-compress-perf/comp_perf_test_common.h
@@ -26,13 +26,20 @@ struct cperf_mem_resources {
struct rte_mempool *comp_buf_pool;
struct rte_mempool *decomp_buf_pool;
struct rte_mempool *op_pool;
+
+ /* external mbuf support */
+ const struct rte_memzone **comp_memzones;
+ const struct rte_memzone **decomp_memzones;
+ struct rte_mbuf_ext_shared_info *comp_buf_infos;
+ struct rte_mbuf_ext_shared_info *decomp_buf_infos;
};
int
param_range_check(uint16_t size, const struct rte_param_log2_range *range);
void
-comp_perf_free_memory(struct cperf_mem_resources *mem);
+comp_perf_free_memory(struct comp_test_data *test_data,
+ struct cperf_mem_resources *mem);
int
comp_perf_allocate_memory(struct comp_test_data *test_data,
diff --git a/app/test-compress-perf/comp_perf_test_verify.c b/app/test-compress-perf/comp_perf_test_verify.c
index f66f95f..758a22f 100644
--- a/app/test-compress-perf/comp_perf_test_verify.c
+++ b/app/test-compress-perf/comp_perf_test_verify.c
@@ -14,7 +14,9 @@ void
cperf_verify_test_destructor(void *arg)
{
if (arg) {
- comp_perf_free_memory(&((struct cperf_verify_ctx *)arg)->mem);
+ comp_perf_free_memory(
+ ((struct cperf_verify_ctx *)arg)->options,
+ &((struct cperf_verify_ctx *)arg)->mem);
rte_free(arg);
}
}
diff --git a/app/test-compress-perf/main.c b/app/test-compress-perf/main.c
index e7ac412..6b56dd6 100644
--- a/app/test-compress-perf/main.c
+++ b/app/test-compress-perf/main.c
@@ -21,7 +21,7 @@
#define NUM_MAX_INFLIGHT_OPS 512
__extension__
-const char *cperf_test_type_strs[] = {
+const char *comp_perf_test_type_strs[] = {
[CPERF_TEST_TYPE_BENCHMARK] = "benchmark",
[CPERF_TEST_TYPE_VERIFY] = "verify"
};
@@ -127,9 +127,13 @@ comp_perf_initialize_compressdev(struct comp_test_data *test_data,
* if there are more available than cores.
*/
if (enabled_cdev_count > nb_lcores) {
+ if (nb_lcores == 0) {
+ RTE_LOG(ERR, USER1, "Cannot run with 0 cores! Increase the number of cores\n");
+ return -EINVAL;
+ }
enabled_cdev_count = nb_lcores;
RTE_LOG(INFO, USER1,
- " There's more available devices than cores!"
+ "There's more available devices than cores!"
" The number of devices has been aligned to %d cores\n",
nb_lcores);
}
diff --git a/app/test-crypto-perf/cperf_options_parsing.c b/app/test-crypto-perf/cperf_options_parsing.c
index 7a5aa06..eba4cf7 100644
--- a/app/test-crypto-perf/cperf_options_parsing.c
+++ b/app/test-crypto-perf/cperf_options_parsing.c
@@ -964,6 +964,13 @@ cperf_options_check(struct cperf_options *options)
if (options->op_type == CPERF_CIPHER_ONLY)
options->digest_sz = 0;
+ if (options->out_of_place &&
+ options->segment_sz <= options->max_buffer_size) {
+ RTE_LOG(ERR, USER1, "Out of place mode can only work "
+ "with non segmented buffers\n");
+ return -EINVAL;
+ }
+
/*
* If segment size is not set, assume only one segment,
* big enough to contain the largest buffer and the digest
diff --git a/app/test-eventdev/evt_common.h b/app/test-eventdev/evt_common.h
index 1c3522f..f9d7378 100644
--- a/app/test-eventdev/evt_common.h
+++ b/app/test-eventdev/evt_common.h
@@ -47,28 +47,30 @@ struct evt_options {
char test_name[EVT_TEST_NAME_MAX_LEN];
bool plcores[RTE_MAX_LCORE];
bool wlcores[RTE_MAX_LCORE];
- uint8_t sched_type_list[EVT_MAX_STAGES];
- uint32_t nb_flows;
- int socket_id;
int pool_sz;
+ int socket_id;
int nb_stages;
int verbose_level;
- uint64_t nb_pkts;
+ uint8_t dev_id;
+ uint8_t timdev_cnt;
uint8_t nb_timer_adptrs;
- uint64_t nb_timers;
- uint64_t timer_tick_nsec;
- uint64_t optm_timer_tick_nsec;
- uint64_t max_tmo_nsec;
- uint64_t expiry_nsec;
+ uint8_t timdev_use_burst;
+ uint8_t sched_type_list[EVT_MAX_STAGES];
+ uint16_t mbuf_sz;
uint16_t wkr_deq_dep;
- uint8_t dev_id;
+ uint32_t nb_flows;
uint32_t tx_first;
- uint32_t fwd_latency:1;
- uint32_t q_priority:1;
+ uint32_t max_pkt_sz;
uint32_t deq_tmo_nsec;
+ uint32_t q_priority:1;
+ uint32_t fwd_latency:1;
+ uint64_t nb_pkts;
+ uint64_t nb_timers;
+ uint64_t expiry_nsec;
+ uint64_t max_tmo_nsec;
+ uint64_t timer_tick_nsec;
+ uint64_t optm_timer_tick_nsec;
enum evt_prod_type prod_type;
- uint8_t timdev_use_burst;
- uint8_t timdev_cnt;
};
static inline bool
diff --git a/app/test-eventdev/evt_options.c b/app/test-eventdev/evt_options.c
index 46c074f..c60b61a 100644
--- a/app/test-eventdev/evt_options.c
+++ b/app/test-eventdev/evt_options.c
@@ -233,6 +233,26 @@ evt_parse_work_lcores(struct evt_options *opt, const char *corelist)
return ret;
}
+static int
+evt_parse_mbuf_sz(struct evt_options *opt, const char *arg)
+{
+ int ret;
+
+ ret = parser_read_uint16(&(opt->mbuf_sz), arg);
+
+ return ret;
+}
+
+static int
+evt_parse_max_pkt_sz(struct evt_options *opt, const char *arg)
+{
+ int ret;
+
+ ret = parser_read_uint32(&(opt->max_pkt_sz), arg);
+
+ return ret;
+}
+
static void
usage(char *program)
{
@@ -262,7 +282,9 @@ usage(char *program)
"\t--nb_timer_adptrs : number of timer adapters to use.\n"
"\t--timer_tick_nsec : timer tick interval in ns.\n"
"\t--max_tmo_nsec : max timeout interval in ns.\n"
- "\t--expiry_nsec : event timer expiry ns.\n"
+ "\t--expiry_nsec : event timer expiry ns.\n"
+ "\t--mbuf_sz : packet mbuf size.\n"
+ "\t--max_pkt_sz : max packet size.\n"
);
printf("available tests:\n");
evt_test_dump_names();
@@ -332,6 +354,8 @@ static struct option lgopts[] = {
{ EVT_TIMER_TICK_NSEC, 1, 0, 0 },
{ EVT_MAX_TMO_NSEC, 1, 0, 0 },
{ EVT_EXPIRY_NSEC, 1, 0, 0 },
+ { EVT_MBUF_SZ, 1, 0, 0 },
+ { EVT_MAX_PKT_SZ, 1, 0, 0 },
{ EVT_HELP, 0, 0, 0 },
{ NULL, 0, 0, 0 }
};
@@ -364,6 +388,8 @@ evt_opts_parse_long(int opt_idx, struct evt_options *opt)
{ EVT_TIMER_TICK_NSEC, evt_parse_timer_tick_nsec},
{ EVT_MAX_TMO_NSEC, evt_parse_max_tmo_nsec},
{ EVT_EXPIRY_NSEC, evt_parse_expiry_nsec},
+ { EVT_MBUF_SZ, evt_parse_mbuf_sz},
+ { EVT_MAX_PKT_SZ, evt_parse_max_pkt_sz},
};
for (i = 0; i < RTE_DIM(parsermap); i++) {
diff --git a/app/test-eventdev/evt_options.h b/app/test-eventdev/evt_options.h
index 845d319..cb1d376 100644
--- a/app/test-eventdev/evt_options.h
+++ b/app/test-eventdev/evt_options.h
@@ -40,6 +40,8 @@
#define EVT_TIMER_TICK_NSEC ("timer_tick_nsec")
#define EVT_MAX_TMO_NSEC ("max_tmo_nsec")
#define EVT_EXPIRY_NSEC ("expiry_nsec")
+#define EVT_MBUF_SZ ("mbuf_sz")
+#define EVT_MAX_PKT_SZ ("max_pkt_sz")
#define EVT_HELP ("help")
void evt_options_default(struct evt_options *opt);
diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c
index aa925a7..e245191 100644
--- a/app/test-eventdev/test_perf_common.c
+++ b/app/test-eventdev/test_perf_common.c
@@ -660,6 +660,7 @@ int
perf_ethdev_setup(struct evt_test *test, struct evt_options *opt)
{
uint16_t i;
+ int ret;
struct test_perf *t = evt_test_priv(test);
struct rte_eth_conf port_conf = {
.rxmode = {
@@ -688,7 +689,12 @@ perf_ethdev_setup(struct evt_test *test, struct evt_options *opt)
struct rte_eth_dev_info dev_info;
struct rte_eth_conf local_port_conf = port_conf;
- rte_eth_dev_info_get(i, &dev_info);
+ ret = rte_eth_dev_info_get(i, &dev_info);
+ if (ret != 0) {
+ evt_err("Error during getting device (port %u) info: %s\n",
+ i, strerror(-ret));
+ return ret;
+ }
local_port_conf.rx_adv_conf.rss_conf.rss_hf &=
dev_info.flow_type_rss_offloads;
@@ -720,7 +726,12 @@ perf_ethdev_setup(struct evt_test *test, struct evt_options *opt)
return -EINVAL;
}
- rte_eth_promiscuous_enable(i);
+ ret = rte_eth_promiscuous_enable(i);
+ if (ret != 0) {
+ evt_err("Failed to enable promiscuous mode for eth port [%d]: %s",
+ i, rte_strerror(-ret));
+ return ret;
+ }
}
return 0;
diff --git a/app/test-eventdev/test_pipeline_common.c b/app/test-eventdev/test_pipeline_common.c
index 16c49b8..386aca2 100644
--- a/app/test-eventdev/test_pipeline_common.c
+++ b/app/test-eventdev/test_pipeline_common.c
@@ -159,13 +159,13 @@ int
pipeline_ethdev_setup(struct evt_test *test, struct evt_options *opt)
{
uint16_t i;
+ int ret;
uint8_t nb_queues = 1;
struct test_pipeline *t = evt_test_priv(test);
struct rte_eth_rxconf rx_conf;
struct rte_eth_conf port_conf = {
.rxmode = {
.mq_mode = ETH_MQ_RX_RSS,
- .max_rx_pkt_len = RTE_ETHER_MAX_LEN,
},
.rx_adv_conf = {
.rss_conf = {
@@ -175,12 +175,21 @@ pipeline_ethdev_setup(struct evt_test *test, struct evt_options *opt)
},
};
- RTE_SET_USED(opt);
if (!rte_eth_dev_count_avail()) {
evt_err("No ethernet ports found.");
return -ENODEV;
}
+ if (opt->max_pkt_sz < RTE_ETHER_MIN_LEN) {
+ evt_err("max_pkt_sz can not be less than %d",
+ RTE_ETHER_MIN_LEN);
+ return -EINVAL;
+ }
+
+ port_conf.rxmode.max_rx_pkt_len = opt->max_pkt_sz;
+ if (opt->max_pkt_sz > RTE_ETHER_MAX_LEN)
+ port_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;
+
t->internal_port = 1;
RTE_ETH_FOREACH_DEV(i) {
struct rte_eth_dev_info dev_info;
@@ -191,7 +200,13 @@ pipeline_ethdev_setup(struct evt_test *test, struct evt_options *opt)
if (!(caps & RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT))
t->internal_port = 0;
- rte_eth_dev_info_get(i, &dev_info);
+ ret = rte_eth_dev_info_get(i, &dev_info);
+ if (ret != 0) {
+ evt_err("Error during getting device (port %u) info: %s\n",
+ i, strerror(-ret));
+ return ret;
+ }
+
rx_conf = dev_info.default_rxconf;
rx_conf.offloads = port_conf.rxmode.offloads;
@@ -226,7 +241,12 @@ pipeline_ethdev_setup(struct evt_test *test, struct evt_options *opt)
return -EINVAL;
}
- rte_eth_promiscuous_enable(i);
+ ret = rte_eth_promiscuous_enable(i);
+ if (ret != 0) {
+ evt_err("Failed to enable promiscuous mode for eth port [%d]: %s",
+ i, rte_strerror(-ret));
+ return ret;
+ }
}
return 0;
@@ -404,12 +424,36 @@ int
pipeline_mempool_setup(struct evt_test *test, struct evt_options *opt)
{
struct test_pipeline *t = evt_test_priv(test);
+ int i;
+
+ if (!opt->mbuf_sz)
+ opt->mbuf_sz = RTE_MBUF_DEFAULT_BUF_SIZE;
+
+ if (!opt->max_pkt_sz)
+ opt->max_pkt_sz = RTE_ETHER_MAX_LEN;
+
+ RTE_ETH_FOREACH_DEV(i) {
+ struct rte_eth_dev_info dev_info;
+ uint16_t data_size = 0;
+
+ memset(&dev_info, 0, sizeof(dev_info));
+ rte_eth_dev_info_get(i, &dev_info);
+ if (dev_info.rx_desc_lim.nb_mtu_seg_max != UINT16_MAX &&
+ dev_info.rx_desc_lim.nb_mtu_seg_max != 0) {
+ data_size = opt->max_pkt_sz /
+ dev_info.rx_desc_lim.nb_mtu_seg_max;
+ data_size += RTE_PKTMBUF_HEADROOM;
+
+ if (data_size > opt->mbuf_sz)
+ opt->mbuf_sz = data_size;
+ }
+ }
t->pool = rte_pktmbuf_pool_create(test->name, /* mempool name */
opt->pool_sz, /* number of elements*/
512, /* cache size*/
0,
- RTE_MBUF_DEFAULT_BUF_SIZE,
+ opt->mbuf_sz,
opt->socket_id); /* flags */
if (t->pool == NULL) {
diff --git a/app/test-eventdev/test_pipeline_common.h b/app/test-eventdev/test_pipeline_common.h
index 0440b9e..6e73c6a 100644
--- a/app/test-eventdev/test_pipeline_common.h
+++ b/app/test-eventdev/test_pipeline_common.h
@@ -106,7 +106,7 @@ pipeline_event_tx(const uint8_t dev, const uint8_t port,
struct rte_event * const ev)
{
rte_event_eth_tx_adapter_txq_set(ev->mbuf, 0);
- while (!rte_event_eth_tx_adapter_enqueue(dev, port, ev, 1))
+ while (!rte_event_eth_tx_adapter_enqueue(dev, port, ev, 1, 0))
rte_pause();
}
@@ -116,10 +116,10 @@ pipeline_event_tx_burst(const uint8_t dev, const uint8_t port,
{
uint16_t enq;
- enq = rte_event_eth_tx_adapter_enqueue(dev, port, ev, nb_rx);
+ enq = rte_event_eth_tx_adapter_enqueue(dev, port, ev, nb_rx, 0);
while (enq < nb_rx) {
enq += rte_event_eth_tx_adapter_enqueue(dev, port,
- ev + enq, nb_rx - enq);
+ ev + enq, nb_rx - enq, 0);
}
}
diff --git a/app/test-pipeline/init.c b/app/test-pipeline/init.c
index b75688a..67d54ae 100644
--- a/app/test-pipeline/init.c
+++ b/app/test-pipeline/init.c
@@ -161,10 +161,19 @@ app_ports_check_link(void)
for (i = 0; i < app.n_ports; i++) {
struct rte_eth_link link;
uint16_t port;
+ int ret;
port = app.ports[i];
memset(&link, 0, sizeof(link));
- rte_eth_link_get_nowait(port, &link);
+ ret = rte_eth_link_get_nowait(port, &link);
+ if (ret < 0) {
+ RTE_LOG(INFO, USER1,
+ "Failed to get port %u link status: %s\n",
+ port, rte_strerror(-ret));
+ all_ports_up = 0;
+ continue;
+ }
+
RTE_LOG(INFO, USER1, "Port %u (%u Gbps) %s\n",
port,
link.link_speed / 1000,
@@ -200,7 +209,10 @@ app_init_ports(void)
if (ret < 0)
rte_panic("Cannot init NIC port %u (%d)\n", port, ret);
- rte_eth_promiscuous_enable(port);
+ ret = rte_eth_promiscuous_enable(port);
+ if (ret != 0)
+ rte_panic("Cannot enable promiscuous mode for port %u: %s\n",
+ port, rte_strerror(-ret));
/* Init RX queues */
ret = rte_eth_rx_queue_setup(
diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index b6bc34b..ded56bf 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -758,6 +758,9 @@ static void cmd_help_long_parsed(void *parsed_result,
"port close (port_id|all)\n"
" Close all ports or port_id.\n\n"
+ "port reset (port_id|all)\n"
+ " Reset all ports or port_id.\n\n"
+
"port attach (ident)\n"
" Attach physical or virtual dev by pci address or virtual device name\n\n"
@@ -1053,7 +1056,7 @@ static void cmd_help_long_parsed(void *parsed_result,
"get_hash_global_config (port_id)\n"
" Get the global configurations of hash filters.\n\n"
- "set_hash_global_config (port_id) (toeplitz|simple_xor|default)"
+ "set_hash_global_config (port_id) (toeplitz|simple_xor|symmetric_toeplitz|default)"
" (ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|ipv6|"
"ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|l2_payload)"
" (enable|disable)\n"
@@ -2181,6 +2184,7 @@ cmd_config_rss_parsed(void *parsed_result,
int all_updated = 1;
int diag;
uint16_t i;
+ int ret;
if (!strcmp(res->value, "all"))
rss_conf.rss_hf = ETH_RSS_IP | ETH_RSS_TCP |
@@ -2220,7 +2224,10 @@ cmd_config_rss_parsed(void *parsed_result,
RTE_ETH_FOREACH_DEV(i) {
struct rte_eth_rss_conf local_rss_conf;
- rte_eth_dev_info_get(i, &dev_info);
+ ret = eth_dev_info_get_print_err(i, &dev_info);
+ if (ret != 0)
+ return;
+
if (use_default)
rss_conf.rss_hf = dev_info.flow_type_rss_offloads;
@@ -2318,9 +2325,12 @@ cmd_config_rss_hash_key_parsed(void *parsed_result,
struct rte_eth_dev_info dev_info;
uint8_t hash_key_size;
uint32_t key_len;
+ int ret;
+
+ ret = eth_dev_info_get_print_err(res->port_id, &dev_info);
+ if (ret != 0)
+ return;
- memset(&dev_info, 0, sizeof(dev_info));
- rte_eth_dev_info_get(res->port_id, &dev_info);
if (dev_info.hash_key_size > 0 &&
dev_info.hash_key_size <= sizeof(hash_key))
hash_key_size = dev_info.hash_key_size;
@@ -2852,8 +2862,10 @@ cmd_set_rss_reta_parsed(void *parsed_result,
struct rte_eth_rss_reta_entry64 reta_conf[8];
struct cmd_config_rss_reta *res = parsed_result;
- memset(&dev_info, 0, sizeof(dev_info));
- rte_eth_dev_info_get(res->port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(res->port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if (dev_info.reta_size == 0) {
printf("Redirection table size is 0 which is "
"invalid for RSS\n");
@@ -2971,9 +2983,12 @@ cmd_showport_reta_parsed(void *parsed_result,
struct rte_eth_rss_reta_entry64 reta_conf[8];
struct rte_eth_dev_info dev_info;
uint16_t max_reta_size;
+ int ret;
+
+ ret = eth_dev_info_get_print_err(res->port_id, &dev_info);
+ if (ret != 0)
+ return;
- memset(&dev_info, 0, sizeof(dev_info));
- rte_eth_dev_info_get(res->port_id, &dev_info);
max_reta_size = RTE_MIN(dev_info.reta_size, ETH_RSS_RETA_SIZE_512);
if (res->size == 0 || res->size > max_reta_size) {
printf("Invalid redirection table size: %u (1-%u)\n",
@@ -3200,6 +3215,7 @@ cmd_config_burst_parsed(void *parsed_result,
struct cmd_config_burst *res = parsed_result;
struct rte_eth_dev_info dev_info;
uint16_t rec_nb_pkts;
+ int ret;
if (!all_ports_stopped()) {
printf("Please stop all ports first\n");
@@ -3213,7 +3229,10 @@ cmd_config_burst_parsed(void *parsed_result,
* size for all ports, so assume all ports are the same
* NIC model and use the values from Port 0.
*/
- rte_eth_dev_info_get(0, &dev_info);
+ ret = eth_dev_info_get_print_err(0, &dev_info);
+ if (ret != 0)
+ return;
+
rec_nb_pkts = dev_info.default_rxportconf.burst_size;
if (rec_nb_pkts == 0) {
@@ -4283,6 +4302,7 @@ csum_show(int port_id)
{
struct rte_eth_dev_info dev_info;
uint64_t tx_offloads;
+ int ret;
tx_offloads = ports[port_id].dev_conf.txmode.offloads;
printf("Parse tunnel is %s\n",
@@ -4301,7 +4321,10 @@ csum_show(int port_id)
(tx_offloads & DEV_TX_OFFLOAD_OUTER_UDP_CKSUM) ? "hw" : "sw");
/* display warnings if configuration is not supported by the NIC */
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if ((tx_offloads & DEV_TX_OFFLOAD_IPV4_CKSUM) &&
(dev_info.tx_offload_capa & DEV_TX_OFFLOAD_IPV4_CKSUM) == 0) {
printf("Warning: hardware IP checksum enabled but not "
@@ -4355,6 +4378,7 @@ cmd_csum_parsed(void *parsed_result,
int hw = 0;
uint64_t csum_offloads = 0;
struct rte_eth_dev_info dev_info;
+ int ret;
if (port_id_is_invalid(res->port_id, ENABLED_WARN)) {
printf("invalid port %d\n", res->port_id);
@@ -4365,7 +4389,10 @@ cmd_csum_parsed(void *parsed_result,
return;
}
- rte_eth_dev_info_get(res->port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(res->port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if (!strcmp(res->mode, "set")) {
if (!strcmp(res->hwsw, "hw"))
@@ -4553,6 +4580,7 @@ cmd_tso_set_parsed(void *parsed_result,
{
struct cmd_tso_set_result *res = parsed_result;
struct rte_eth_dev_info dev_info;
+ int ret;
if (port_id_is_invalid(res->port_id, ENABLED_WARN))
return;
@@ -4564,7 +4592,10 @@ cmd_tso_set_parsed(void *parsed_result,
if (!strcmp(res->mode, "set"))
ports[res->port_id].tso_segsz = res->tso_segsz;
- rte_eth_dev_info_get(res->port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(res->port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if ((ports[res->port_id].tso_segsz != 0) &&
(dev_info.tx_offload_capa & DEV_TX_OFFLOAD_TCP_TSO) == 0) {
printf("Error: TSO is not supported by port %d\n",
@@ -4585,7 +4616,10 @@ cmd_tso_set_parsed(void *parsed_result,
cmd_config_queue_tx_offloads(&ports[res->port_id]);
/* display warnings if configuration is not supported by the NIC */
- rte_eth_dev_info_get(res->port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(res->port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if ((ports[res->port_id].tso_segsz != 0) &&
(dev_info.tx_offload_capa & DEV_TX_OFFLOAD_TCP_TSO) == 0) {
printf("Warning: TSO enabled but not "
@@ -4654,7 +4688,9 @@ check_tunnel_tso_nic_support(portid_t port_id)
{
struct rte_eth_dev_info dev_info;
- rte_eth_dev_info_get(port_id, &dev_info);
+ if (eth_dev_info_get_print_err(port_id, &dev_info) != 0)
+ return dev_info;
+
if (!(dev_info.tx_offload_capa & DEV_TX_OFFLOAD_VXLAN_TNL_TSO))
printf("Warning: VXLAN TUNNEL TSO not supported therefore "
"not enabled for port %d\n", port_id);
@@ -6049,6 +6085,7 @@ static void cmd_create_bonded_device_parsed(void *parsed_result,
struct cmd_create_bonded_device_result *res = parsed_result;
char ethdev_name[RTE_ETH_NAME_MAX_LEN];
int port_id;
+ int ret;
if (test_done == 0) {
printf("Please stop forwarding first\n");
@@ -6070,7 +6107,11 @@ static void cmd_create_bonded_device_parsed(void *parsed_result,
/* Update number of ports */
nb_ports = rte_eth_dev_count_avail();
reconfig(port_id, res->socket);
- rte_eth_promiscuous_enable(port_id);
+ ret = rte_eth_promiscuous_enable(port_id);
+ if (ret != 0)
+ printf("Failed to enable promiscuous mode for port %u: %s - ignore\n",
+ port_id, rte_strerror(-ret));
+
ports[port_id].need_setup = 0;
ports[port_id].port_status = RTE_PORT_STOPPED;
}
@@ -6492,18 +6533,10 @@ static void cmd_set_promisc_mode_parsed(void *parsed_result,
/* all ports */
if (allports) {
- RTE_ETH_FOREACH_DEV(i) {
- if (enable)
- rte_eth_promiscuous_enable(i);
- else
- rte_eth_promiscuous_disable(i);
- }
- }
- else {
- if (enable)
- rte_eth_promiscuous_enable(res->port_num);
- else
- rte_eth_promiscuous_disable(res->port_num);
+ RTE_ETH_FOREACH_DEV(i)
+ eth_set_promisc_mode(i, enable);
+ } else {
+ eth_set_promisc_mode(res->port_num, enable);
}
}
@@ -6573,17 +6606,11 @@ static void cmd_set_allmulti_mode_parsed(void *parsed_result,
/* all ports */
if (allports) {
RTE_ETH_FOREACH_DEV(i) {
- if (enable)
- rte_eth_allmulticast_enable(i);
- else
- rte_eth_allmulticast_disable(i);
+ eth_set_allmulticast_mode(i, enable);
}
}
else {
- if (enable)
- rte_eth_allmulticast_enable(res->port_num);
- else
- rte_eth_allmulticast_disable(res->port_num);
+ eth_set_allmulticast_mode(res->port_num, enable);
}
}
@@ -11091,8 +11118,11 @@ cmd_flow_director_filter_parsed(void *parsed_result,
else if (!strncmp(res->pf_vf, "vf", 2)) {
struct rte_eth_dev_info dev_info;
- memset(&dev_info, 0, sizeof(dev_info));
- rte_eth_dev_info_get(res->port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(res->port_id,
+ &dev_info);
+ if (ret != 0)
+ return;
+
errno = 0;
vf_id = strtoul(res->pf_vf + 2, &end, 10);
if (errno != 0 || *end != '\0' ||
@@ -12166,6 +12196,9 @@ cmd_get_hash_global_config_parsed(void *parsed_result,
case RTE_ETH_HASH_FUNCTION_SIMPLE_XOR:
printf("Hash function is Simple XOR\n");
break;
+ case RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ:
+ printf("Hash function is Symmetric Toeplitz\n");
+ break;
default:
printf("Unknown hash function\n");
break;
@@ -12239,6 +12272,9 @@ cmd_set_hash_global_config_parsed(void *parsed_result,
else if (!strcmp(res->hash_func, "simple_xor"))
info.info.global_conf.hash_func =
RTE_ETH_HASH_FUNCTION_SIMPLE_XOR;
+ else if (!strcmp(res->hash_func, "symmetric_toeplitz"))
+ info.info.global_conf.hash_func =
+ RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ;
else if (!strcmp(res->hash_func, "default"))
info.info.global_conf.hash_func =
RTE_ETH_HASH_FUNCTION_DEFAULT;
@@ -12268,7 +12304,7 @@ cmdline_parse_token_num_t cmd_set_hash_global_config_port_id =
port_id, UINT16);
cmdline_parse_token_string_t cmd_set_hash_global_config_hash_func =
TOKEN_STRING_INITIALIZER(struct cmd_set_hash_global_config_result,
- hash_func, "toeplitz#simple_xor#default");
+ hash_func, "toeplitz#simple_xor#symmetric_toeplitz#default");
cmdline_parse_token_string_t cmd_set_hash_global_config_flow_type =
TOKEN_STRING_INITIALIZER(struct cmd_set_hash_global_config_result,
flow_type,
@@ -12282,7 +12318,7 @@ cmdline_parse_inst_t cmd_set_hash_global_config = {
.f = cmd_set_hash_global_config_parsed,
.data = NULL,
.help_str = "set_hash_global_config <port_id> "
- "toeplitz|simple_xor|default "
+ "toeplitz|simple_xor|symmetric_toeplitz|default "
"ipv4|ipv4-frag|ipv4-tcp|ipv4-udp|ipv4-sctp|ipv4-other|"
"ipv6|ipv6-frag|ipv6-tcp|ipv6-udp|ipv6-sctp|ipv6-other|"
"l2_payload enable|disable",
@@ -14084,7 +14120,10 @@ cmd_set_macsec_offload_on_parsed(
return;
}
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MACSEC_INSERT) {
#ifdef RTE_LIBRTE_IXGBE_PMD
ret = rte_pmd_ixgbe_macsec_enable(port_id, en, rp);
@@ -14178,7 +14217,10 @@ cmd_set_macsec_offload_off_parsed(
return;
}
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MACSEC_INSERT) {
#ifdef RTE_LIBRTE_IXGBE_PMD
ret = rte_pmd_ixgbe_macsec_disable(port_id);
@@ -17888,8 +17930,12 @@ cmd_rx_offload_get_capa_parsed(
portid_t port_id = res->port_id;
uint64_t queue_offloads;
uint64_t port_offloads;
+ int ret;
+
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
- rte_eth_dev_info_get(port_id, &dev_info);
queue_offloads = dev_info.rx_queue_offload_capa;
port_offloads = dev_info.rx_offload_capa ^ queue_offloads;
@@ -17961,6 +18007,7 @@ cmd_rx_offload_get_configuration_parsed(
uint64_t queue_offloads;
uint16_t nb_rx_queues;
int q;
+ int ret;
printf("Rx Offloading Configuration of port %d :\n", port_id);
@@ -17969,7 +18016,10 @@ cmd_rx_offload_get_configuration_parsed(
print_rx_offloads(port_offloads);
printf("\n");
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
nb_rx_queues = dev_info.nb_rx_queues;
for (q = 0; q < nb_rx_queues; q++) {
queue_offloads = port->rx_conf[q].offloads;
@@ -18068,6 +18118,7 @@ cmd_config_per_port_rx_offload_parsed(void *parsed_result,
uint64_t single_offload;
uint16_t nb_rx_queues;
int q;
+ int ret;
if (port->port_status != RTE_PORT_STOPPED) {
printf("Error: Can't config offload when Port %d "
@@ -18081,7 +18132,10 @@ cmd_config_per_port_rx_offload_parsed(void *parsed_result,
return;
}
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
nb_rx_queues = dev_info.nb_rx_queues;
if (!strcmp(res->on_off, "on")) {
port->dev_conf.rxmode.offloads |= single_offload;
@@ -18169,6 +18223,7 @@ cmd_config_per_queue_rx_offload_parsed(void *parsed_result,
uint16_t queue_id = res->queue_id;
struct rte_port *port = &ports[port_id];
uint64_t single_offload;
+ int ret;
if (port->port_status != RTE_PORT_STOPPED) {
printf("Error: Can't config offload when Port %d "
@@ -18176,7 +18231,10 @@ cmd_config_per_queue_rx_offload_parsed(void *parsed_result,
return;
}
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if (queue_id >= dev_info.nb_rx_queues) {
printf("Error: input queue_id should be 0 ... "
"%d\n", dev_info.nb_rx_queues - 1);
@@ -18282,8 +18340,12 @@ cmd_tx_offload_get_capa_parsed(
portid_t port_id = res->port_id;
uint64_t queue_offloads;
uint64_t port_offloads;
+ int ret;
+
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
- rte_eth_dev_info_get(port_id, &dev_info);
queue_offloads = dev_info.tx_queue_offload_capa;
port_offloads = dev_info.tx_offload_capa ^ queue_offloads;
@@ -18355,6 +18417,7 @@ cmd_tx_offload_get_configuration_parsed(
uint64_t queue_offloads;
uint16_t nb_tx_queues;
int q;
+ int ret;
printf("Tx Offloading Configuration of port %d :\n", port_id);
@@ -18363,7 +18426,10 @@ cmd_tx_offload_get_configuration_parsed(
print_tx_offloads(port_offloads);
printf("\n");
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
nb_tx_queues = dev_info.nb_tx_queues;
for (q = 0; q < nb_tx_queues; q++) {
queue_offloads = port->tx_conf[q].offloads;
@@ -18467,6 +18533,7 @@ cmd_config_per_port_tx_offload_parsed(void *parsed_result,
uint64_t single_offload;
uint16_t nb_tx_queues;
int q;
+ int ret;
if (port->port_status != RTE_PORT_STOPPED) {
printf("Error: Can't config offload when Port %d "
@@ -18480,7 +18547,10 @@ cmd_config_per_port_tx_offload_parsed(void *parsed_result,
return;
}
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
nb_tx_queues = dev_info.nb_tx_queues;
if (!strcmp(res->on_off, "on")) {
port->dev_conf.txmode.offloads |= single_offload;
@@ -18571,6 +18641,7 @@ cmd_config_per_queue_tx_offload_parsed(void *parsed_result,
uint16_t queue_id = res->queue_id;
struct rte_port *port = &ports[port_id];
uint64_t single_offload;
+ int ret;
if (port->port_status != RTE_PORT_STOPPED) {
printf("Error: Can't config offload when Port %d "
@@ -18578,7 +18649,10 @@ cmd_config_per_queue_tx_offload_parsed(void *parsed_result,
return;
}
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if (queue_id >= dev_info.nb_tx_queues) {
printf("Error: input queue_id should be 0 ... "
"%d\n", dev_info.nb_tx_queues - 1);
diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c
index 4958713..b26b8bf 100644
--- a/app/test-pmd/cmdline_flow.c
+++ b/app/test-pmd/cmdline_flow.c
@@ -196,6 +196,13 @@ enum index {
ITEM_META_DATA,
ITEM_GRE_KEY,
ITEM_GRE_KEY_VALUE,
+ ITEM_GTP_PSC,
+ ITEM_GTP_PSC_QFI,
+ ITEM_GTP_PSC_PDU_T,
+ ITEM_PPPOES,
+ ITEM_PPPOED,
+ ITEM_PPPOE_SEID,
+ ITEM_PPPOE_PROTO_ID,
/* Validate/create actions. */
ACTIONS,
@@ -220,6 +227,7 @@ enum index {
ACTION_RSS_FUNC_DEFAULT,
ACTION_RSS_FUNC_TOEPLITZ,
ACTION_RSS_FUNC_SIMPLE_XOR,
+ ACTION_RSS_FUNC_SYMMETRIC_TOEPLITZ,
ACTION_RSS_TYPES,
ACTION_RSS_TYPE,
ACTION_RSS_KEY,
@@ -663,6 +671,10 @@ static const enum index next_item[] = {
ITEM_ICMP6_ND_OPT_TLA_ETH,
ITEM_META,
ITEM_GRE_KEY,
+ ITEM_GTP_PSC,
+ ITEM_PPPOES,
+ ITEM_PPPOED,
+ ITEM_PPPOE_PROTO_ID,
END_SET,
ZERO,
};
@@ -902,6 +914,31 @@ static const enum index item_meta[] = {
ZERO,
};
+static const enum index item_gtp_psc[] = {
+ ITEM_GTP_PSC_QFI,
+ ITEM_GTP_PSC_PDU_T,
+ ITEM_NEXT,
+ ZERO,
+};
+
+static const enum index item_pppoed[] = {
+ ITEM_PPPOE_SEID,
+ ITEM_NEXT,
+ ZERO,
+};
+
+static const enum index item_pppoes[] = {
+ ITEM_PPPOE_SEID,
+ ITEM_NEXT,
+ ZERO,
+};
+
+static const enum index item_pppoe_proto_id[] = {
+ ITEM_PPPOE_PROTO_ID,
+ ITEM_NEXT,
+ ZERO,
+};
+
static const enum index next_action[] = {
ACTION_END,
ACTION_VOID,
@@ -2331,7 +2368,57 @@ static const struct token token_list[] = {
.next = NEXT(item_gre_key, NEXT_ENTRY(UNSIGNED), item_param),
.args = ARGS(ARG_ENTRY_HTON(rte_be32_t)),
},
-
+ [ITEM_GTP_PSC] = {
+ .name = "gtp_psc",
+ .help = "match GTP extension header with type 0x85",
+ .priv = PRIV_ITEM(GTP_PSC,
+ sizeof(struct rte_flow_item_gtp_psc)),
+ .next = NEXT(item_gtp_psc),
+ .call = parse_vc,
+ },
+ [ITEM_GTP_PSC_QFI] = {
+ .name = "qfi",
+ .help = "QoS flow identifier",
+ .next = NEXT(item_gtp_psc, NEXT_ENTRY(UNSIGNED), item_param),
+ .args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gtp_psc,
+ qfi)),
+ },
+ [ITEM_GTP_PSC_PDU_T] = {
+ .name = "pdu_t",
+ .help = "PDU type",
+ .next = NEXT(item_gtp_psc, NEXT_ENTRY(UNSIGNED), item_param),
+ .args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gtp_psc,
+ pdu_type)),
+ },
+ [ITEM_PPPOES] = {
+ .name = "pppoes",
+ .help = "match PPPoE session header",
+ .priv = PRIV_ITEM(PPPOES, sizeof(struct rte_flow_item_pppoe)),
+ .next = NEXT(item_pppoes),
+ .call = parse_vc,
+ },
+ [ITEM_PPPOED] = {
+ .name = "pppoed",
+ .help = "match PPPoE discovery header",
+ .priv = PRIV_ITEM(PPPOED, sizeof(struct rte_flow_item_pppoe)),
+ .next = NEXT(item_pppoed),
+ .call = parse_vc,
+ },
+ [ITEM_PPPOE_SEID] = {
+ .name = "seid",
+ .help = "session identifier",
+ .next = NEXT(item_pppoes, NEXT_ENTRY(UNSIGNED), item_param),
+ .args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_pppoe,
+ session_id)),
+ },
+ [ITEM_PPPOE_PROTO_ID] = {
+ .name = "proto_id",
+ .help = "match PPPoE session protocol identifier",
+ .priv = PRIV_ITEM(PPPOE_PROTO_ID,
+ sizeof(struct rte_flow_item_pppoe_proto_id)),
+ .next = NEXT(item_pppoe_proto_id),
+ .call = parse_vc,
+ },
/* Validate/create actions. */
[ACTIONS] = {
.name = "actions",
@@ -2457,7 +2544,8 @@ static const struct token token_list[] = {
.next = NEXT(action_rss,
NEXT_ENTRY(ACTION_RSS_FUNC_DEFAULT,
ACTION_RSS_FUNC_TOEPLITZ,
- ACTION_RSS_FUNC_SIMPLE_XOR)),
+ ACTION_RSS_FUNC_SIMPLE_XOR,
+ ACTION_RSS_FUNC_SYMMETRIC_TOEPLITZ)),
},
[ACTION_RSS_FUNC_DEFAULT] = {
.name = "default",
@@ -2474,6 +2562,11 @@ static const struct token token_list[] = {
.help = "simple XOR hash function",
.call = parse_vc_action_rss_func,
},
+ [ACTION_RSS_FUNC_SYMMETRIC_TOEPLITZ] = {
+ .name = "symmetric_toeplitz",
+ .help = "Symmetric Toeplitz hash function",
+ .call = parse_vc_action_rss_func,
+ },
[ACTION_RSS_LEVEL] = {
.name = "level",
.help = "encapsulation level for \"types\"",
@@ -3549,8 +3642,12 @@ parse_vc_action_rss(struct context *ctx, const struct token *token,
if (!port_id_is_invalid(ctx->port, DISABLED_WARN) &&
ctx->port != (portid_t)RTE_PORT_ALL) {
struct rte_eth_dev_info info;
+ int ret2;
+
+ ret2 = rte_eth_dev_info_get(ctx->port, &info);
+ if (ret2 != 0)
+ return ret2;
- rte_eth_dev_info_get(ctx->port, &info);
action_rss_data->conf.key_len =
RTE_MIN(sizeof(action_rss_data->key),
info.hash_key_size);
@@ -3588,6 +3685,9 @@ parse_vc_action_rss_func(struct context *ctx, const struct token *token,
case ACTION_RSS_FUNC_SIMPLE_XOR:
func = RTE_ETH_HASH_FUNCTION_SIMPLE_XOR;
break;
+ case ACTION_RSS_FUNC_SYMMETRIC_TOEPLITZ:
+ func = RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ;
+ break;
default:
return -1;
}
@@ -5756,6 +5856,11 @@ flow_item_default_mask(const struct rte_flow_item *item)
case RTE_FLOW_ITEM_TYPE_ESP:
mask = &rte_flow_item_esp_mask;
break;
+ case RTE_FLOW_ITEM_TYPE_GTP_PSC:
+ mask = &rte_flow_item_gtp_psc_mask;
+ break;
+ case RTE_FLOW_ITEM_TYPE_PPPOE_PROTO_ID:
+ mask = &rte_flow_item_pppoe_proto_id_mask;
default:
break;
}
diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c
index 1a5a5c1..a3b6cbd 100644
--- a/app/test-pmd/config.c
+++ b/app/test-pmd/config.c
@@ -273,7 +273,13 @@ nic_xstats_display(portid_t port_id)
void
nic_xstats_clear(portid_t port_id)
{
- rte_eth_xstats_reset(port_id);
+ int ret;
+
+ ret = rte_eth_xstats_reset(port_id);
+ if (ret != 0) {
+ printf("%s: Error: failed to reset xstats (port %u): %s",
+ __func__, port_id, strerror(ret));
+ }
}
void
@@ -448,9 +454,11 @@ skip_parse:
/* List ports with matching device name */
RTE_ETH_FOREACH_DEV_OF(port_id, dev) {
- rte_eth_macaddr_get(port_id, &mac_addr);
printf("\n\tPort id: %-2d", port_id);
- print_ethaddr("\n\tMAC address: ", &mac_addr);
+ if (eth_macaddr_get_print_err(port_id,
+ &mac_addr) == 0)
+ print_ethaddr("\n\tMAC address: ",
+ &mac_addr);
rte_eth_dev_get_name_by_port(port_id, name);
printf("\n\tDevice name: %s", name);
printf("\n");
@@ -471,19 +479,25 @@ port_infos_display(portid_t port_id)
static const char *info_border = "*********************";
uint16_t mtu;
char name[RTE_ETH_NAME_MAX_LEN];
+ int ret;
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
print_valid_ports();
return;
}
port = &ports[port_id];
- rte_eth_link_get_nowait(port_id, &link);
- memset(&dev_info, 0, sizeof(dev_info));
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_link_get_nowait_print_err(port_id, &link);
+ if (ret < 0)
+ return;
+
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
printf("\n%s Infos for port %-2d %s\n",
info_border, port_id, info_border);
- rte_eth_macaddr_get(port_id, &mac_addr);
- print_ethaddr("MAC address: ", &mac_addr);
+ if (eth_macaddr_get_print_err(port_id, &mac_addr) == 0)
+ print_ethaddr("MAC address: ", &mac_addr);
rte_eth_dev_get_name_by_port(port_id, name);
printf("\nDevice name: %s", name);
printf("\nDriver name: %s", dev_info.driver_name);
@@ -618,16 +632,25 @@ port_summary_display(portid_t port_id)
struct rte_eth_link link;
struct rte_eth_dev_info dev_info;
char name[RTE_ETH_NAME_MAX_LEN];
+ int ret;
if (port_id_is_invalid(port_id, ENABLED_WARN)) {
print_valid_ports();
return;
}
- rte_eth_link_get_nowait(port_id, &link);
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_link_get_nowait_print_err(port_id, &link);
+ if (ret < 0)
+ return;
+
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
rte_eth_dev_get_name_by_port(port_id, name);
- rte_eth_macaddr_get(port_id, &mac_addr);
+ ret = eth_macaddr_get_print_err(port_id, &mac_addr);
+ if (ret != 0)
+ return;
printf("%-4d %02X:%02X:%02X:%02X:%02X:%02X %-12s %-14s %-8s %uMbps\n",
port_id, mac_addr.addr_bytes[0], mac_addr.addr_bytes[1],
@@ -642,11 +665,14 @@ port_offload_cap_display(portid_t port_id)
{
struct rte_eth_dev_info dev_info;
static const char *info_border = "************";
+ int ret;
if (port_id_is_invalid(port_id, ENABLED_WARN))
return;
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
printf("\n%s Port %d supported offload features: %s\n",
info_border, port_id, info_border);
@@ -1140,10 +1166,15 @@ port_mtu_set(portid_t port_id, uint16_t mtu)
{
int diag;
struct rte_eth_dev_info dev_info;
+ int ret;
if (port_id_is_invalid(port_id, ENABLED_WARN))
return;
- rte_eth_dev_info_get(port_id, &dev_info);
+
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if (mtu > dev_info.max_mtu || mtu < dev_info.min_mtu) {
printf("Set MTU failed. MTU:%u is not in valid range, min:%u - max:%u\n",
mtu, dev_info.min_mtu, dev_info.max_mtu);
@@ -1621,10 +1652,13 @@ ring_rx_descriptor_display(const struct rte_memzone *ring_mz,
struct igb_ring_desc_16_bytes *ring =
(struct igb_ring_desc_16_bytes *)ring_mz->addr;
#ifndef RTE_LIBRTE_I40E_16BYTE_RX_DESC
+ int ret;
struct rte_eth_dev_info dev_info;
- memset(&dev_info, 0, sizeof(dev_info));
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if (strstr(dev_info.driver_name, "i40e") != NULL) {
/* 32 bytes RX descriptor, i40e only */
struct igb_ring_desc_32_bytes *ring =
@@ -1834,11 +1868,15 @@ port_rss_hash_conf_show(portid_t port_id, int show_rss_key)
int diag;
struct rte_eth_dev_info dev_info;
uint8_t hash_key_size;
+ int ret;
if (port_id_is_invalid(port_id, ENABLED_WARN))
return;
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if (dev_info.hash_key_size > 0 &&
dev_info.hash_key_size <= sizeof(rss_key))
hash_key_size = dev_info.hash_key_size;
@@ -2796,11 +2834,15 @@ add_rx_dump_callbacks(portid_t portid)
{
struct rte_eth_dev_info dev_info;
uint16_t queue;
+ int ret;
if (port_id_is_invalid(portid, ENABLED_WARN))
return;
- rte_eth_dev_info_get(portid, &dev_info);
+ ret = eth_dev_info_get_print_err(portid, &dev_info);
+ if (ret != 0)
+ return;
+
for (queue = 0; queue < dev_info.nb_rx_queues; queue++)
if (!ports[portid].rx_dump_cb[queue])
ports[portid].rx_dump_cb[queue] =
@@ -2813,10 +2855,15 @@ add_tx_dump_callbacks(portid_t portid)
{
struct rte_eth_dev_info dev_info;
uint16_t queue;
+ int ret;
if (port_id_is_invalid(portid, ENABLED_WARN))
return;
- rte_eth_dev_info_get(portid, &dev_info);
+
+ ret = eth_dev_info_get_print_err(portid, &dev_info);
+ if (ret != 0)
+ return;
+
for (queue = 0; queue < dev_info.nb_tx_queues; queue++)
if (!ports[portid].tx_dump_cb[queue])
ports[portid].tx_dump_cb[queue] =
@@ -2829,10 +2876,15 @@ remove_rx_dump_callbacks(portid_t portid)
{
struct rte_eth_dev_info dev_info;
uint16_t queue;
+ int ret;
if (port_id_is_invalid(portid, ENABLED_WARN))
return;
- rte_eth_dev_info_get(portid, &dev_info);
+
+ ret = eth_dev_info_get_print_err(portid, &dev_info);
+ if (ret != 0)
+ return;
+
for (queue = 0; queue < dev_info.nb_rx_queues; queue++)
if (ports[portid].rx_dump_cb[queue]) {
rte_eth_remove_rx_callback(portid, queue,
@@ -2846,10 +2898,15 @@ remove_tx_dump_callbacks(portid_t portid)
{
struct rte_eth_dev_info dev_info;
uint16_t queue;
+ int ret;
if (port_id_is_invalid(portid, ENABLED_WARN))
return;
- rte_eth_dev_info_get(portid, &dev_info);
+
+ ret = eth_dev_info_get_print_err(portid, &dev_info);
+ if (ret != 0)
+ return;
+
for (queue = 0; queue < dev_info.nb_tx_queues; queue++)
if (ports[portid].tx_dump_cb[queue]) {
rte_eth_remove_tx_callback(portid, queue,
@@ -3037,6 +3094,7 @@ void
tx_vlan_set(portid_t port_id, uint16_t vlan_id)
{
struct rte_eth_dev_info dev_info;
+ int ret;
if (port_id_is_invalid(port_id, ENABLED_WARN))
return;
@@ -3048,7 +3106,11 @@ tx_vlan_set(portid_t port_id, uint16_t vlan_id)
printf("Error, as QinQ has been enabled.\n");
return;
}
- rte_eth_dev_info_get(port_id, &dev_info);
+
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if ((dev_info.tx_offload_capa & DEV_TX_OFFLOAD_VLAN_INSERT) == 0) {
printf("Error: vlan insert is not supported by port %d\n",
port_id);
@@ -3064,6 +3126,7 @@ void
tx_qinq_set(portid_t port_id, uint16_t vlan_id, uint16_t vlan_id_outer)
{
struct rte_eth_dev_info dev_info;
+ int ret;
if (port_id_is_invalid(port_id, ENABLED_WARN))
return;
@@ -3072,7 +3135,10 @@ tx_qinq_set(portid_t port_id, uint16_t vlan_id, uint16_t vlan_id_outer)
if (vlan_id_is_invalid(vlan_id_outer))
return;
- rte_eth_dev_info_get(port_id, &dev_info);
+ ret = eth_dev_info_get_print_err(port_id, &dev_info);
+ if (ret != 0)
+ return;
+
if ((dev_info.tx_offload_capa & DEV_TX_OFFLOAD_QINQ_INSERT) == 0) {
printf("Error: qinq insert not supported by port %d\n",
port_id);
@@ -3463,10 +3529,13 @@ set_queue_rate_limit(portid_t port_id, uint16_t queue_idx, uint16_t rate)
{
int diag;
struct rte_eth_link link;
+ int ret;
if (port_id_is_invalid(port_id, ENABLED_WARN))
return 1;
- rte_eth_link_get_nowait(port_id, &link);
+ ret = eth_link_get_nowait_print_err(port_id, &link);
+ if (ret < 0)
+ return 1;
if (rate > link.link_speed) {
printf("Invalid rate value:%u bigger than link speed: %u\n",
rate, link.link_speed);
diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index 5244872..6c78dca 100644
--- a/app/test-pmd/parameters.c
+++ b/app/test-pmd/parameters.c
@@ -562,6 +562,7 @@ launch_args_parse(int argc, char** argv)
uint64_t tx_offloads = tx_mode.offloads;
struct rte_eth_dev_info dev_info;
uint16_t rec_nb_pkts;
+ int ret;
static struct option lgopts[] = {
{ "help", 0, 0, 0 },
@@ -1050,7 +1051,12 @@ launch_args_parse(int argc, char** argv)
* value, on the assumption that all
* ports are of the same NIC model.
*/
- rte_eth_dev_info_get(0, &dev_info);
+ ret = eth_dev_info_get_print_err(
+ 0,
+ &dev_info);
+ if (ret != 0)
+ return;
+
rec_nb_pkts = dev_info
.default_rxportconf.burst_size;
diff --git a/app/test-pmd/softnicfwd.c b/app/test-pmd/softnicfwd.c
index 94e6669..e9d4373 100644
--- a/app/test-pmd/softnicfwd.c
+++ b/app/test-pmd/softnicfwd.c
@@ -163,16 +163,22 @@ softnic_begin(void *arg __rte_unused)
return 0;
}
-static void
+static int
set_tm_hiearchy_nodes_shaper_rate(portid_t port_id,
struct tm_hierarchy *h)
{
struct rte_eth_link link_params;
uint64_t tm_port_rate;
+ int ret;
memset(&link_params, 0, sizeof(link_params));
- rte_eth_link_get(port_id, &link_params);
+ ret = rte_eth_link_get(port_id, &link_params);
+ if (ret < 0) {
+ printf("Error during getting device (port %u) link info: %s\n",
+ port_id, rte_strerror(-ret));
+ return ret;
+ }
tm_port_rate = (uint64_t)ETH_SPEED_NUM_10G * BYTES_IN_MBPS;
/* Set tm hierarchy shapers rate */
@@ -183,6 +189,8 @@ set_tm_hiearchy_nodes_shaper_rate(portid_t port_id,
= h->subport_node_shaper_rate / PIPE_NODES_PER_SUBPORT;
h->tc_node_shaper_rate = h->pipe_node_shaper_rate;
h->tc_node_shared_shaper_rate = h->subport_node_shaper_rate;
+
+ return 0;
}
static int
@@ -554,7 +562,9 @@ softport_tm_hierarchy_specify(portid_t port_id,
memset(&h, 0, sizeof(struct tm_hierarchy));
/* TM hierarchy shapers rate */
- set_tm_hiearchy_nodes_shaper_rate(port_id, &h);
+ status = set_tm_hiearchy_nodes_shaper_rate(port_id, &h);
+ if (status)
+ return status;
/* Add root node (level 0) */
status = softport_tm_root_node_add(port_id, &h, error);
diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index e8e2a39..5701f31 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -1012,17 +1012,21 @@ queueid_t
get_allowed_max_nb_rxq(portid_t *pid)
{
queueid_t allowed_max_rxq = MAX_QUEUE_ID;
+ bool max_rxq_valid = false;
portid_t pi;
struct rte_eth_dev_info dev_info;
RTE_ETH_FOREACH_DEV(pi) {
- rte_eth_dev_info_get(pi, &dev_info);
+ if (eth_dev_info_get_print_err(pi, &dev_info) != 0)
+ continue;
+
+ max_rxq_valid = true;
if (dev_info.max_rx_queues < allowed_max_rxq) {
allowed_max_rxq = dev_info.max_rx_queues;
*pid = pi;
}
}
- return allowed_max_rxq;
+ return max_rxq_valid ? allowed_max_rxq : 0;
}
/*
@@ -1058,17 +1062,21 @@ queueid_t
get_allowed_max_nb_txq(portid_t *pid)
{
queueid_t allowed_max_txq = MAX_QUEUE_ID;
+ bool max_txq_valid = false;
portid_t pi;
struct rte_eth_dev_info dev_info;
RTE_ETH_FOREACH_DEV(pi) {
- rte_eth_dev_info_get(pi, &dev_info);
+ if (eth_dev_info_get_print_err(pi, &dev_info) != 0)
+ continue;
+
+ max_txq_valid = true;
if (dev_info.max_tx_queues < allowed_max_txq) {
allowed_max_txq = dev_info.max_tx_queues;
*pid = pi;
}
}
- return allowed_max_txq;
+ return max_txq_valid ? allowed_max_txq : 0;
}
/*
@@ -1109,6 +1117,7 @@ init_config(void)
uint16_t data_size;
bool warning = 0;
int k;
+ int ret;
memset(port_per_socket,0,RTE_MAX_NUMA_NODES);
@@ -1136,7 +1145,11 @@ init_config(void)
/* Apply default TxRx configuration for all ports */
port->dev_conf.txmode = tx_mode;
port->dev_conf.rxmode = rx_mode;
- rte_eth_dev_info_get(pid, &port->dev_info);
+
+ ret = eth_dev_info_get_print_err(pid, &port->dev_info);
+ if (ret != 0)
+ rte_exit(EXIT_FAILURE,
+ "rte_eth_dev_info_get() failed\n");
if (!(port->dev_info.tx_offload_capa &
DEV_TX_OFFLOAD_MBUF_FAST_FREE))
@@ -1295,10 +1308,14 @@ void
reconfig(portid_t new_port_id, unsigned socket_id)
{
struct rte_port *port;
+ int ret;
/* Reconfiguration of Ethernet ports. */
port = &ports[new_port_id];
- rte_eth_dev_info_get(new_port_id, &port->dev_info);
+
+ ret = eth_dev_info_get_print_err(new_port_id, &port->dev_info);
+ if (ret != 0)
+ return;
/* set flag to initialize port/queue */
port->need_reconfig = 1;
@@ -2192,8 +2209,8 @@ start_port(portid_t pid)
RTE_PORT_HANDLING, RTE_PORT_STARTED) == 0)
printf("Port %d can not be set into started\n", pi);
- rte_eth_macaddr_get(pi, &mac_addr);
- printf("Port %d: %02X:%02X:%02X:%02X:%02X:%02X\n", pi,
+ if (eth_macaddr_get_print_err(pi, &mac_addr) == 0)
+ printf("Port %d: %02X:%02X:%02X:%02X:%02X:%02X\n", pi,
mac_addr.addr_bytes[0], mac_addr.addr_bytes[1],
mac_addr.addr_bytes[2], mac_addr.addr_bytes[3],
mac_addr.addr_bytes[4], mac_addr.addr_bytes[5]);
@@ -2344,6 +2361,12 @@ reset_port(portid_t pid)
if (port_id_is_invalid(pid, ENABLED_WARN))
return;
+ if ((pid == (portid_t)RTE_PORT_ALL && !all_ports_stopped()) ||
+ (pid != (portid_t)RTE_PORT_ALL && !port_is_stopped(pid))) {
+ printf("Can not reset port(s), please stop port(s) first.\n");
+ return;
+ }
+
printf("Resetting ports...\n");
RTE_ETH_FOREACH_DEV(pi) {
@@ -2416,13 +2439,17 @@ static void
setup_attached_port(portid_t pi)
{
unsigned int socket_id;
+ int ret;
socket_id = (unsigned)rte_eth_dev_socket_id(pi);
/* if socket_id is invalid, set to the first available socket. */
if (check_socket_id(socket_id) < 0)
socket_id = socket_ids[0];
reconfig(pi, socket_id);
- rte_eth_promiscuous_enable(pi);
+ ret = rte_eth_promiscuous_enable(pi);
+ if (ret != 0)
+ printf("Error during enabling promiscuous mode for port %u: %s - ignore\n",
+ pi, rte_strerror(-ret));
ports_ids[nb_ports++] = pi;
fwd_ports_ids[nb_fwd_ports++] = pi;
@@ -2604,6 +2631,7 @@ check_all_ports_link_status(uint32_t port_mask)
portid_t portid;
uint8_t count, all_ports_up, print_flag = 0;
struct rte_eth_link link;
+ int ret;
printf("Checking link statuses...\n");
fflush(stdout);
@@ -2613,7 +2641,14 @@ check_all_ports_link_status(uint32_t port_mask)
if ((port_mask & (1 << portid)) == 0)
continue;
memset(&link, 0, sizeof(link));
- rte_eth_link_get_nowait(portid, &link);
+ ret = rte_eth_link_get_nowait(portid, &link);
+ if (ret < 0) {
+ all_ports_up = 0;
+ if (print_flag == 1)
+ printf("Port %u link get failed: %s\n",
+ portid, rte_strerror(-ret));
+ continue;
+ }
/* print link status if flag set */
if (print_flag == 1) {
if (link.link_status)
@@ -2927,11 +2962,16 @@ init_port_config(void)
{
portid_t pid;
struct rte_port *port;
+ int ret;
RTE_ETH_FOREACH_DEV(pid) {
port = &ports[pid];
port->dev_conf.fdir_conf = fdir_conf;
- rte_eth_dev_info_get(pid, &port->dev_info);
+
+ ret = eth_dev_info_get_print_err(pid, &port->dev_info);
+ if (ret != 0)
+ return;
+
if (nb_rxq > 1) {
port->dev_conf.rx_adv_conf.rss_conf.rss_key = NULL;
port->dev_conf.rx_adv_conf.rss_conf.rss_hf =
@@ -2950,7 +2990,9 @@ init_port_config(void)
rxtx_port_config(port);
- rte_eth_macaddr_get(pid, &port->eth_addr);
+ ret = eth_macaddr_get_print_err(pid, &port->eth_addr);
+ if (ret != 0)
+ return;
map_port_queue_stats_mapping_registers(pid, port);
#if defined RTE_LIBRTE_IXGBE_PMD && defined RTE_LIBRTE_IXGBE_BYPASS
@@ -3106,7 +3148,10 @@ init_port_dcb_config(portid_t pid,
retval = rte_eth_dev_configure(pid, nb_rxq, nb_rxq, &port_conf);
if (retval < 0)
return retval;
- rte_eth_dev_info_get(pid, &rte_port->dev_info);
+
+ retval = eth_dev_info_get_print_err(pid, &rte_port->dev_info);
+ if (retval != 0)
+ return retval;
/* If dev_info.vmdq_pool_base is greater than 0,
* the queue id of vmdq pools is started after pf queues.
@@ -3150,7 +3195,10 @@ init_port_dcb_config(portid_t pid,
for (i = 0; i < RTE_DIM(vlan_tags); i++)
rx_vft_set(pid, vlan_tags[i], 1);
- rte_eth_macaddr_get(pid, &rte_port->eth_addr);
+ retval = eth_macaddr_get_print_err(pid, &rte_port->eth_addr);
+ if (retval != 0)
+ return retval;
+
map_port_queue_stats_mapping_registers(pid, rte_port);
rte_port->dcb_flag = 1;
@@ -3348,8 +3396,12 @@ main(int argc, char** argv)
rte_exit(EXIT_FAILURE, "Start ports failed\n");
/* set all ports to promiscuous mode by default */
- RTE_ETH_FOREACH_DEV(port_id)
- rte_eth_promiscuous_enable(port_id);
+ RTE_ETH_FOREACH_DEV(port_id) {
+ ret = rte_eth_promiscuous_enable(port_id);
+ if (ret != 0)
+ printf("Error during enabling promiscuous mode for port %u: %s - ignore\n",
+ port_id, rte_strerror(-ret));
+ }
/* Init metrics library */
rte_metrics_init(rte_socket_id());
diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
index ce13eb8..f8ebe71 100644
--- a/app/test-pmd/testpmd.h
+++ b/app/test-pmd/testpmd.h
@@ -822,6 +822,14 @@ void setup_gro(const char *onoff, portid_t port_id);
void setup_gro_flush_cycles(uint8_t cycles);
void show_gro(portid_t port_id);
void setup_gso(const char *mode, portid_t port_id);
+int eth_dev_info_get_print_err(uint16_t port_id,
+ struct rte_eth_dev_info *dev_info);
+void eth_set_promisc_mode(uint16_t port_id, int enable);
+void eth_set_allmulticast_mode(uint16_t port, int enable);
+int eth_link_get_nowait_print_err(uint16_t port_id, struct rte_eth_link *link);
+int eth_macaddr_get_print_err(uint16_t port_id,
+ struct rte_ether_addr *mac_addr);
+
/* Functions to manage the set of filtered Multicast MAC addresses */
void mcast_addr_add(portid_t port_id, struct rte_ether_addr *mc_addr);
diff --git a/app/test-pmd/util.c b/app/test-pmd/util.c
index 18dfdca..1570270 100644
--- a/app/test-pmd/util.c
+++ b/app/test-pmd/util.c
@@ -194,10 +194,15 @@ add_tx_md_callback(portid_t portid)
{
struct rte_eth_dev_info dev_info;
uint16_t queue;
+ int ret;
if (port_id_is_invalid(portid, ENABLED_WARN))
return;
- rte_eth_dev_info_get(portid, &dev_info);
+
+ ret = eth_dev_info_get_print_err(portid, &dev_info);
+ if (ret != 0)
+ return;
+
for (queue = 0; queue < dev_info.nb_tx_queues; queue++)
if (!ports[portid].tx_set_md_cb[queue])
ports[portid].tx_set_md_cb[queue] =
@@ -210,10 +215,15 @@ remove_tx_md_callback(portid_t portid)
{
struct rte_eth_dev_info dev_info;
uint16_t queue;
+ int ret;
if (port_id_is_invalid(portid, ENABLED_WARN))
return;
- rte_eth_dev_info_get(portid, &dev_info);
+
+ ret = eth_dev_info_get_print_err(portid, &dev_info);
+ if (ret != 0)
+ return;
+
for (queue = 0; queue < dev_info.nb_tx_queues; queue++)
if (ports[portid].tx_set_md_cb[queue]) {
rte_eth_remove_tx_callback(portid, queue,
@@ -221,3 +231,75 @@ remove_tx_md_callback(portid_t portid)
ports[portid].tx_set_md_cb[queue] = NULL;
}
}
+
+int
+eth_dev_info_get_print_err(uint16_t port_id,
+ struct rte_eth_dev_info *dev_info)
+{
+ int ret;
+
+ ret = rte_eth_dev_info_get(port_id, dev_info);
+ if (ret != 0)
+ printf("Error during getting device (port %u) info: %s\n",
+ port_id, strerror(-ret));
+
+ return ret;
+}
+
+void
+eth_set_promisc_mode(uint16_t port, int enable)
+{
+ int ret;
+
+ if (enable)
+ ret = rte_eth_promiscuous_enable(port);
+ else
+ ret = rte_eth_promiscuous_disable(port);
+
+ if (ret != 0)
+ printf("Error during %s promiscuous mode for port %u: %s\n",
+ enable ? "enabling" : "disabling",
+ port, rte_strerror(-ret));
+}
+
+void
+eth_set_allmulticast_mode(uint16_t port, int enable)
+{
+ int ret;
+
+ if (enable)
+ ret = rte_eth_allmulticast_enable(port);
+ else
+ ret = rte_eth_allmulticast_disable(port);
+
+ if (ret != 0)
+ printf("Error during %s all-multicast mode for port %u: %s\n",
+ enable ? "enabling" : "disabling",
+ port, rte_strerror(-ret));
+}
+
+int
+eth_link_get_nowait_print_err(uint16_t port_id, struct rte_eth_link *link)
+{
+ int ret;
+
+ ret = rte_eth_link_get_nowait(port_id, link);
+ if (ret < 0)
+ printf("Device (port %u) link get (without wait) failed: %s\n",
+ port_id, rte_strerror(-ret));
+
+ return ret;
+}
+
+int
+eth_macaddr_get_print_err(uint16_t port_id, struct rte_ether_addr *mac_addr)
+{
+ int ret;
+
+ ret = rte_eth_macaddr_get(port_id, mac_addr);
+ if (ret != 0)
+ printf("Error getting device (port %u) mac address: %s\n",
+ port_id, rte_strerror(-ret));
+
+ return ret;
+}
diff --git a/app/test/Makefile b/app/test/Makefile
index 26ba6fe..df7f77f 100644
--- a/app/test/Makefile
+++ b/app/test/Makefile
@@ -196,6 +196,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_PMD_RING) += test_pmd_ring_perf.c
SRCS-$(CONFIG_RTE_LIBRTE_CRYPTODEV) += test_cryptodev_blockcipher.c
SRCS-$(CONFIG_RTE_LIBRTE_CRYPTODEV) += test_cryptodev.c
SRCS-$(CONFIG_RTE_LIBRTE_CRYPTODEV) += test_cryptodev_asym.c
+SRCS-$(CONFIG_RTE_LIBRTE_SECURITY) += test_cryptodev_security_pdcp.c
SRCS-$(CONFIG_RTE_LIBRTE_METRICS) += test_metrics.c
diff --git a/app/test/meson.build b/app/test/meson.build
index ec40943..2c23c63 100644
--- a/app/test/meson.build
+++ b/app/test/meson.build
@@ -30,6 +30,7 @@ test_sources = files('commands.c',
'test_cryptodev.c',
'test_cryptodev_asym.c',
'test_cryptodev_blockcipher.c',
+ 'test_cryptodev_security_pdcp.c',
'test_cycles.c',
'test_debug.c',
'test_distributor.c',
diff --git a/app/test/test_compressdev.c b/app/test/test_compressdev.c
index 992eac8..d470c34 100644
--- a/app/test/test_compressdev.c
+++ b/app/test/test_compressdev.c
@@ -95,11 +95,21 @@ struct interim_data_params {
};
struct test_data_params {
- enum rte_comp_op_type state;
+ enum rte_comp_op_type compress_state;
+ enum rte_comp_op_type decompress_state;
enum varied_buff buff_type;
enum zlib_direction zlib_dir;
unsigned int out_of_space;
unsigned int big_data;
+ /* stateful decompression specific parameters */
+ unsigned int decompress_output_block_size;
+ unsigned int decompress_steps_max;
+ /* external mbufs specific parameters */
+ unsigned int use_external_mbufs;
+ unsigned int inbuf_data_size;
+ const struct rte_memzone *inbuf_memzone;
+ const struct rte_memzone *compbuf_memzone;
+ const struct rte_memzone *uncompbuf_memzone;
};
static struct comp_testsuite_params testsuite_params = { 0 };
@@ -237,7 +247,7 @@ generic_ut_setup(void)
.socket_id = rte_socket_id(),
.nb_queue_pairs = 1,
.max_nb_priv_xforms = NUM_MAX_XFORMS,
- .max_nb_streams = 0
+ .max_nb_streams = 1
};
if (rte_compressdev_configure(0, &config) < 0) {
@@ -275,7 +285,7 @@ test_compressdev_invalid_configuration(void)
.socket_id = rte_socket_id(),
.nb_queue_pairs = 1,
.max_nb_priv_xforms = NUM_MAX_XFORMS,
- .max_nb_streams = 0
+ .max_nb_streams = 1
};
struct rte_compressdev_info dev_info;
@@ -710,6 +720,11 @@ prepare_sgl_bufs(const char *test_buf, struct rte_mbuf *head_buf,
return 0;
}
+static void
+extbuf_free_callback(void *addr __rte_unused, void *opaque __rte_unused)
+{
+}
+
/*
* Compresses and decompresses buffer with compressdev API and Zlib API
*/
@@ -724,12 +739,16 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
struct rte_comp_xform **compress_xforms = int_data->compress_xforms;
struct rte_comp_xform **decompress_xforms = int_data->decompress_xforms;
unsigned int num_xforms = int_data->num_xforms;
- enum rte_comp_op_type state = test_data->state;
+ enum rte_comp_op_type compress_state = test_data->compress_state;
+ enum rte_comp_op_type decompress_state = test_data->decompress_state;
unsigned int buff_type = test_data->buff_type;
unsigned int out_of_space = test_data->out_of_space;
unsigned int big_data = test_data->big_data;
enum zlib_direction zlib_dir = test_data->zlib_dir;
- int ret_status = -1;
+ int ret_status = TEST_FAILED;
+ struct rte_mbuf_ext_shared_info inbuf_info;
+ struct rte_mbuf_ext_shared_info compbuf_info;
+ struct rte_mbuf_ext_shared_info decompbuf_info;
int ret;
struct rte_mbuf *uncomp_bufs[num_bufs];
struct rte_mbuf *comp_bufs[num_bufs];
@@ -754,11 +773,18 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
rte_compressdev_capability_get(0, RTE_COMP_ALGO_DEFLATE);
char *contig_buf = NULL;
uint64_t compress_checksum[num_bufs];
+ void *stream = NULL;
+ char *all_decomp_data = NULL;
+ unsigned int decomp_produced_data_size = 0;
+ unsigned int step = 0;
+
+ TEST_ASSERT(decompress_state == RTE_COMP_OP_STATELESS || num_bufs == 1,
+ "Number of stateful operations in a step should be 1");
if (capa == NULL) {
RTE_LOG(ERR, USER1,
"Compress device does not support DEFLATE\n");
- return -1;
+ return -ENOTSUP;
}
/* Initialize all arrays to NULL */
@@ -768,6 +794,12 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
memset(ops_processed, 0, sizeof(struct rte_comp_op *) * num_bufs);
memset(priv_xforms, 0, sizeof(void *) * num_bufs);
+ if (decompress_state == RTE_COMP_OP_STATEFUL) {
+ data_size = strlen(test_bufs[0]) + 1;
+ all_decomp_data = rte_malloc(NULL, data_size,
+ RTE_CACHE_LINE_SIZE);
+ }
+
if (big_data)
buf_pool = ts_params->big_mbuf_pool;
else if (buff_type == SGL_BOTH)
@@ -785,7 +817,20 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
goto exit;
}
- if (buff_type == SGL_BOTH || buff_type == SGL_TO_LB) {
+ if (test_data->use_external_mbufs) {
+ inbuf_info.free_cb = extbuf_free_callback;
+ inbuf_info.fcb_opaque = NULL;
+ rte_mbuf_ext_refcnt_set(&inbuf_info, 1);
+ for (i = 0; i < num_bufs; i++) {
+ rte_pktmbuf_attach_extbuf(uncomp_bufs[i],
+ test_data->inbuf_memzone->addr,
+ test_data->inbuf_memzone->iova,
+ test_data->inbuf_data_size,
+ &inbuf_info);
+ rte_pktmbuf_append(uncomp_bufs[i],
+ test_data->inbuf_data_size);
+ }
+ } else if (buff_type == SGL_BOTH || buff_type == SGL_TO_LB) {
for (i = 0; i < num_bufs; i++) {
data_size = strlen(test_bufs[i]) + 1;
if (prepare_sgl_bufs(test_bufs[i], uncomp_bufs[i],
@@ -813,7 +858,20 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
goto exit;
}
- if (buff_type == SGL_BOTH || buff_type == LB_TO_SGL) {
+ if (test_data->use_external_mbufs) {
+ compbuf_info.free_cb = extbuf_free_callback;
+ compbuf_info.fcb_opaque = NULL;
+ rte_mbuf_ext_refcnt_set(&compbuf_info, 1);
+ for (i = 0; i < num_bufs; i++) {
+ rte_pktmbuf_attach_extbuf(comp_bufs[i],
+ test_data->compbuf_memzone->addr,
+ test_data->compbuf_memzone->iova,
+ test_data->compbuf_memzone->len,
+ &compbuf_info);
+ rte_pktmbuf_append(comp_bufs[i],
+ test_data->compbuf_memzone->len);
+ }
+ } else if (buff_type == SGL_BOTH || buff_type == LB_TO_SGL) {
for (i = 0; i < num_bufs; i++) {
if (out_of_space == 1 && oos_zlib_decompress)
data_size = OUT_OF_SPACE_BUF;
@@ -859,9 +917,9 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
ops[i]->src.offset = 0;
ops[i]->src.length = rte_pktmbuf_pkt_len(uncomp_bufs[i]);
ops[i]->dst.offset = 0;
- if (state == RTE_COMP_OP_STATELESS) {
+ if (compress_state == RTE_COMP_OP_STATELESS)
ops[i]->flush_flag = RTE_COMP_FLUSH_FINAL;
- } else {
+ else {
RTE_LOG(ERR, USER1,
"Stateful operations are not supported "
"in these tests yet\n");
@@ -1007,8 +1065,7 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
if (out_of_space && oos_zlib_decompress) {
if (ops_processed[i]->status !=
RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED) {
- ret_status = -1;
-
+ ret_status = TEST_FAILED;
RTE_LOG(ERR, USER1,
"Operation without expected out of "
"space status error\n");
@@ -1028,7 +1085,7 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
}
if (out_of_space && oos_zlib_decompress) {
- ret_status = 0;
+ ret_status = TEST_SUCCESS;
goto exit;
}
@@ -1041,12 +1098,28 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
goto exit;
}
- if (buff_type == SGL_BOTH || buff_type == LB_TO_SGL) {
+ if (test_data->use_external_mbufs) {
+ decompbuf_info.free_cb = extbuf_free_callback;
+ decompbuf_info.fcb_opaque = NULL;
+ rte_mbuf_ext_refcnt_set(&decompbuf_info, 1);
+ for (i = 0; i < num_bufs; i++) {
+ rte_pktmbuf_attach_extbuf(uncomp_bufs[i],
+ test_data->uncompbuf_memzone->addr,
+ test_data->uncompbuf_memzone->iova,
+ test_data->uncompbuf_memzone->len,
+ &decompbuf_info);
+ rte_pktmbuf_append(uncomp_bufs[i],
+ test_data->uncompbuf_memzone->len);
+ }
+ } else if (buff_type == SGL_BOTH || buff_type == LB_TO_SGL) {
for (i = 0; i < num_bufs; i++) {
priv_data = (struct priv_op_data *)
(ops_processed[i] + 1);
if (out_of_space == 1 && oos_zlib_compress)
data_size = OUT_OF_SPACE_BUF;
+ else if (test_data->decompress_output_block_size != 0)
+ data_size =
+ test_data->decompress_output_block_size;
else
data_size =
strlen(test_bufs[priv_data->orig_idx]) + 1;
@@ -1067,6 +1140,9 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
(ops_processed[i] + 1);
if (out_of_space == 1 && oos_zlib_compress)
data_size = OUT_OF_SPACE_BUF;
+ else if (test_data->decompress_output_block_size != 0)
+ data_size =
+ test_data->decompress_output_block_size;
else
data_size =
strlen(test_bufs[priv_data->orig_idx]) + 1;
@@ -1094,9 +1170,14 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
* number of bytes that were produced in the previous stage
*/
ops[i]->src.length = ops_processed[i]->produced;
+
ops[i]->dst.offset = 0;
- if (state == RTE_COMP_OP_STATELESS) {
+ if (decompress_state == RTE_COMP_OP_STATELESS) {
ops[i]->flush_flag = RTE_COMP_FLUSH_FINAL;
+ ops[i]->op_type = RTE_COMP_OP_STATELESS;
+ } else if (zlib_dir == ZLIB_COMPRESS || zlib_dir == ZLIB_NONE) {
+ ops[i]->flush_flag = RTE_COMP_FLUSH_SYNC;
+ ops[i]->op_type = RTE_COMP_OP_STATEFUL;
} else {
RTE_LOG(ERR, USER1,
"Stateful operations are not supported "
@@ -1133,33 +1214,12 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
ops_processed[i] = ops[i];
}
} else {
- /* Create decompress private xform data */
- for (i = 0; i < num_xforms; i++) {
- ret = rte_compressdev_private_xform_create(0,
- (const struct rte_comp_xform *)decompress_xforms[i],
- &priv_xforms[i]);
- if (ret < 0) {
- RTE_LOG(ERR, USER1,
- "Decompression private xform "
- "could not be created\n");
- goto exit;
- }
- num_priv_xforms++;
- }
-
- if (capa->comp_feature_flags & RTE_COMP_FF_SHAREABLE_PRIV_XFORM) {
- /* Attach shareable private xform data to ops */
- for (i = 0; i < num_bufs; i++) {
- priv_data = (struct priv_op_data *)(ops[i] + 1);
- uint16_t xform_idx = priv_data->orig_idx %
- num_xforms;
- ops[i]->private_xform = priv_xforms[xform_idx];
- }
- } else {
- /* Create rest of the private xforms for the other ops */
- for (i = num_xforms; i < num_bufs; i++) {
+ if (decompress_state == RTE_COMP_OP_STATELESS) {
+ /* Create decompress private xform data */
+ for (i = 0; i < num_xforms; i++) {
ret = rte_compressdev_private_xform_create(0,
- decompress_xforms[i % num_xforms],
+ (const struct rte_comp_xform *)
+ decompress_xforms[i],
&priv_xforms[i]);
if (ret < 0) {
RTE_LOG(ERR, USER1,
@@ -1170,14 +1230,60 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
num_priv_xforms++;
}
- /* Attach non shareable private xform data to ops */
- for (i = 0; i < num_bufs; i++) {
- priv_data = (struct priv_op_data *)(ops[i] + 1);
- uint16_t xform_idx = priv_data->orig_idx;
- ops[i]->private_xform = priv_xforms[xform_idx];
+ if (capa->comp_feature_flags &
+ RTE_COMP_FF_SHAREABLE_PRIV_XFORM) {
+ /* Attach shareable private xform data to ops */
+ for (i = 0; i < num_bufs; i++) {
+ priv_data = (struct priv_op_data *)
+ (ops[i] + 1);
+ uint16_t xform_idx =
+ priv_data->orig_idx % num_xforms;
+ ops[i]->private_xform =
+ priv_xforms[xform_idx];
+ }
+ } else {
+ /* Create rest of the private xforms */
+ /* for the other ops */
+ for (i = num_xforms; i < num_bufs; i++) {
+ ret =
+ rte_compressdev_private_xform_create(0,
+ decompress_xforms[i % num_xforms],
+ &priv_xforms[i]);
+ if (ret < 0) {
+ RTE_LOG(ERR, USER1,
+ "Decompression private xform could not be created\n");
+ goto exit;
+ }
+ num_priv_xforms++;
+ }
+
+ /* Attach non shareable private xform data */
+ /* to ops */
+ for (i = 0; i < num_bufs; i++) {
+ priv_data = (struct priv_op_data *)
+ (ops[i] + 1);
+ uint16_t xform_idx =
+ priv_data->orig_idx;
+ ops[i]->private_xform =
+ priv_xforms[xform_idx];
+ }
}
+ } else {
+ /* Create a stream object for stateful decompression */
+ ret = rte_compressdev_stream_create(0,
+ decompress_xforms[0], &stream);
+ if (ret < 0) {
+ RTE_LOG(ERR, USER1,
+ "Decompression stream could not be created, error %d\n",
+ ret);
+ goto exit;
+ }
+ /* Attach stream to ops */
+ for (i = 0; i < num_bufs; i++)
+ ops[i]->stream = stream;
}
+next_step:
/* Enqueue and dequeue all operations */
num_enqd = rte_compressdev_enqueue_burst(0, 0, ops, num_bufs);
if (num_enqd < num_bufs) {
@@ -1234,8 +1340,7 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
if (out_of_space && oos_zlib_compress) {
if (ops_processed[i]->status !=
RTE_COMP_OP_STATUS_OUT_OF_SPACE_TERMINATED) {
- ret_status = -1;
-
+ ret_status = TEST_FAILED;
RTE_LOG(ERR, USER1,
"Operation without expected out of "
"space status error\n");
@@ -1244,7 +1349,75 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
continue;
}
- if (ops_processed[i]->status != RTE_COMP_OP_STATUS_SUCCESS) {
+ if (decompress_state == RTE_COMP_OP_STATEFUL
+ && (ops_processed[i]->status ==
+ RTE_COMP_OP_STATUS_OUT_OF_SPACE_RECOVERABLE
+ || ops_processed[i]->status ==
+ RTE_COMP_OP_STATUS_SUCCESS)) {
+ /* collect the output into all_decomp_data */
+ const void *ptr = rte_pktmbuf_read(
+ ops_processed[i]->m_dst,
+ ops_processed[i]->dst.offset,
+ ops_processed[i]->produced,
+ all_decomp_data +
+ decomp_produced_data_size);
+ if (ptr != all_decomp_data + decomp_produced_data_size)
+ rte_memcpy(all_decomp_data +
+ decomp_produced_data_size,
+ ptr, ops_processed[i]->produced);
+ decomp_produced_data_size += ops_processed[i]->produced;
+ if (ops_processed[i]->src.length >
+ ops_processed[i]->consumed) {
+ if (ops_processed[i]->status ==
+ RTE_COMP_OP_STATUS_SUCCESS) {
+ ret_status = -1;
+ RTE_LOG(ERR, USER1,
+ "Operation finished too early\n");
+ goto exit;
+ }
+ step++;
+ if (step >= test_data->decompress_steps_max) {
+ ret_status = -1;
+ RTE_LOG(ERR, USER1,
+ "Operation exceeded maximum steps\n");
+ goto exit;
+ }
+ ops[i] = ops_processed[i];
+ ops[i]->status =
+ RTE_COMP_OP_STATUS_NOT_PROCESSED;
+ ops[i]->src.offset +=
+ ops_processed[i]->consumed;
+ ops[i]->src.length -=
+ ops_processed[i]->consumed;
+ goto next_step;
+ } else {
+ /* Compare the original stream with the */
+ /* decompressed stream (in size and the data) */
+ priv_data = (struct priv_op_data *)
+ (ops_processed[i] + 1);
+ const char *buf1 =
+ test_bufs[priv_data->orig_idx];
+ const char *buf2 = all_decomp_data;
+
+ if (compare_buffers(buf1, strlen(buf1) + 1,
+ buf2, decomp_produced_data_size) < 0)
+ goto exit;
+ /* Test checksums */
+ if (compress_xforms[0]->compress.chksum
+ != RTE_COMP_CHECKSUM_NONE) {
+ if (ops_processed[i]->output_chksum
+ != compress_checksum[i]) {
+ RTE_LOG(ERR, USER1,
+ "The checksums differ\n"
+ "Compression Checksum: %" PRIu64 "\tDecompression "
+ "Checksum: %" PRIu64 "\n", compress_checksum[i],
+ ops_processed[i]->output_chksum);
+ goto exit;
+ }
+ }
+ }
+ } else if (ops_processed[i]->status !=
+ RTE_COMP_OP_STATUS_SUCCESS) {
RTE_LOG(ERR, USER1,
"Some operations were not successful\n");
goto exit;
@@ -1254,8 +1427,9 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
comp_bufs[priv_data->orig_idx] = NULL;
}
- if (out_of_space && oos_zlib_compress) {
- ret_status = 0;
+ if ((out_of_space && oos_zlib_compress)
+ || (decompress_state == RTE_COMP_OP_STATEFUL)) {
+ ret_status = TEST_SUCCESS;
goto exit;
}
@@ -1265,8 +1439,13 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
*/
for (i = 0; i < num_bufs; i++) {
priv_data = (struct priv_op_data *)(ops_processed[i] + 1);
- const char *buf1 = test_bufs[priv_data->orig_idx];
+ const char *buf1 = test_data->use_external_mbufs ?
+ test_data->inbuf_memzone->addr :
+ test_bufs[priv_data->orig_idx];
const char *buf2;
+ data_size = test_data->use_external_mbufs ?
+ test_data->inbuf_data_size :
+ strlen(buf1) + 1;
contig_buf = rte_malloc(NULL, ops_processed[i]->produced, 0);
if (contig_buf == NULL) {
RTE_LOG(ERR, USER1, "Contiguous buffer could not "
@@ -1276,7 +1455,7 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
buf2 = rte_pktmbuf_read(ops_processed[i]->m_dst, 0,
ops_processed[i]->produced, contig_buf);
- if (compare_buffers(buf1, strlen(buf1) + 1,
+ if (compare_buffers(buf1, data_size,
buf2, ops_processed[i]->produced) < 0)
goto exit;
@@ -1297,7 +1476,7 @@ test_deflate_comp_decomp(const struct interim_data_params *int_data,
contig_buf = NULL;
}
- ret_status = 0;
+ ret_status = TEST_SUCCESS;
exit:
/* Free resources */
@@ -1307,10 +1486,13 @@ exit:
rte_comp_op_free(ops[i]);
rte_comp_op_free(ops_processed[i]);
}
- for (i = 0; i < num_priv_xforms; i++) {
+ for (i = 0; i < num_priv_xforms; i++)
if (priv_xforms[i] != NULL)
rte_compressdev_private_xform_free(0, priv_xforms[i]);
- }
+ if (stream != NULL)
+ rte_compressdev_stream_free(0, stream);
+ if (all_decomp_data != NULL)
+ rte_free(all_decomp_data);
rte_free(contig_buf);
return ret_status;
@@ -1354,11 +1536,12 @@ test_compressdev_deflate_stateless_fixed(void)
};
struct test_data_params test_data = {
- RTE_COMP_OP_STATELESS,
- LB_BOTH,
- ZLIB_DECOMPRESS,
- 0,
- 0
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATELESS,
+ .buff_type = LB_BOTH,
+ .zlib_dir = ZLIB_DECOMPRESS,
+ .out_of_space = 0,
+ .big_data = 0
};
for (i = 0; i < RTE_DIM(compress_test_bufs); i++) {
@@ -1367,17 +1550,15 @@ test_compressdev_deflate_stateless_fixed(void)
/* Compress with compressdev, decompress with Zlib */
test_data.zlib_dir = ZLIB_DECOMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
/* Compress with Zlib, decompress with compressdev */
test_data.zlib_dir = ZLIB_COMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
}
ret = TEST_SUCCESS;
@@ -1425,11 +1606,12 @@ test_compressdev_deflate_stateless_dynamic(void)
};
struct test_data_params test_data = {
- RTE_COMP_OP_STATELESS,
- LB_BOTH,
- ZLIB_DECOMPRESS,
- 0,
- 0
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATELESS,
+ .buff_type = LB_BOTH,
+ .zlib_dir = ZLIB_DECOMPRESS,
+ .out_of_space = 0,
+ .big_data = 0
};
for (i = 0; i < RTE_DIM(compress_test_bufs); i++) {
@@ -1438,17 +1620,15 @@ test_compressdev_deflate_stateless_dynamic(void)
/* Compress with compressdev, decompress with Zlib */
test_data.zlib_dir = ZLIB_DECOMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
/* Compress with Zlib, decompress with compressdev */
test_data.zlib_dir = ZLIB_COMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
}
ret = TEST_SUCCESS;
@@ -1465,6 +1645,7 @@ test_compressdev_deflate_stateless_multi_op(void)
uint16_t num_bufs = RTE_DIM(compress_test_bufs);
uint16_t buf_idx[num_bufs];
uint16_t i;
+ int ret;
for (i = 0; i < num_bufs; i++)
buf_idx[i] = i;
@@ -1479,22 +1660,25 @@ test_compressdev_deflate_stateless_multi_op(void)
};
struct test_data_params test_data = {
- RTE_COMP_OP_STATELESS,
- LB_BOTH,
- ZLIB_DECOMPRESS,
- 0,
- 0
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATELESS,
+ .buff_type = LB_BOTH,
+ .zlib_dir = ZLIB_DECOMPRESS,
+ .out_of_space = 0,
+ .big_data = 0
};
/* Compress with compressdev, decompress with Zlib */
test_data.zlib_dir = ZLIB_DECOMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0)
- return TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
+ return ret;
/* Compress with Zlib, decompress with compressdev */
test_data.zlib_dir = ZLIB_COMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0)
- return TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
+ return ret;
return TEST_SUCCESS;
}
@@ -1529,11 +1713,12 @@ test_compressdev_deflate_stateless_multi_level(void)
};
struct test_data_params test_data = {
- RTE_COMP_OP_STATELESS,
- LB_BOTH,
- ZLIB_DECOMPRESS,
- 0,
- 0
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATELESS,
+ .buff_type = LB_BOTH,
+ .zlib_dir = ZLIB_DECOMPRESS,
+ .out_of_space = 0,
+ .big_data = 0
};
for (i = 0; i < RTE_DIM(compress_test_bufs); i++) {
@@ -1545,10 +1730,9 @@ test_compressdev_deflate_stateless_multi_level(void)
compress_xform->compress.level = level;
/* Compress with compressdev, decompress with Zlib */
test_data.zlib_dir = ZLIB_DECOMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
}
}
@@ -1571,7 +1755,6 @@ test_compressdev_deflate_stateless_multi_xform(void)
uint16_t i;
unsigned int level = RTE_COMP_LEVEL_MIN;
uint16_t buf_idx[num_bufs];
-
int ret;
/* Create multiple xforms with various levels */
@@ -1619,20 +1802,21 @@ test_compressdev_deflate_stateless_multi_xform(void)
};
struct test_data_params test_data = {
- RTE_COMP_OP_STATELESS,
- LB_BOTH,
- ZLIB_DECOMPRESS,
- 0,
- 0
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATELESS,
+ .buff_type = LB_BOTH,
+ .zlib_dir = ZLIB_DECOMPRESS,
+ .out_of_space = 0,
+ .big_data = 0
};
/* Compress with compressdev, decompress with Zlib */
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
ret = TEST_SUCCESS;
+
exit:
for (i = 0; i < NUM_XFORMS; i++) {
rte_free(compress_xforms[i]);
@@ -1647,6 +1831,7 @@ test_compressdev_deflate_stateless_sgl(void)
{
struct comp_testsuite_params *ts_params = &testsuite_params;
uint16_t i;
+ int ret;
const struct rte_compressdev_capabilities *capab;
capab = rte_compressdev_capability_get(0, RTE_COMP_ALGO_DEFLATE);
@@ -1665,11 +1850,12 @@ test_compressdev_deflate_stateless_sgl(void)
};
struct test_data_params test_data = {
- RTE_COMP_OP_STATELESS,
- SGL_BOTH,
- ZLIB_DECOMPRESS,
- 0,
- 0
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATELESS,
+ .buff_type = SGL_BOTH,
+ .zlib_dir = ZLIB_DECOMPRESS,
+ .out_of_space = 0,
+ .big_data = 0
};
for (i = 0; i < RTE_DIM(compress_test_bufs); i++) {
@@ -1678,47 +1864,50 @@ test_compressdev_deflate_stateless_sgl(void)
/* Compress with compressdev, decompress with Zlib */
test_data.zlib_dir = ZLIB_DECOMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0)
- return TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
+ return ret;
/* Compress with Zlib, decompress with compressdev */
test_data.zlib_dir = ZLIB_COMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0)
- return TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
+ return ret;
if (capab->comp_feature_flags & RTE_COMP_FF_OOP_SGL_IN_LB_OUT) {
/* Compress with compressdev, decompress with Zlib */
test_data.zlib_dir = ZLIB_DECOMPRESS;
test_data.buff_type = SGL_TO_LB;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0)
- return TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
+ return ret;
/* Compress with Zlib, decompress with compressdev */
test_data.zlib_dir = ZLIB_COMPRESS;
test_data.buff_type = SGL_TO_LB;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0)
- return TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
+ return ret;
}
if (capab->comp_feature_flags & RTE_COMP_FF_OOP_LB_IN_SGL_OUT) {
/* Compress with compressdev, decompress with Zlib */
test_data.zlib_dir = ZLIB_DECOMPRESS;
test_data.buff_type = LB_TO_SGL;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0)
- return TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
+ return ret;
/* Compress with Zlib, decompress with compressdev */
test_data.zlib_dir = ZLIB_COMPRESS;
test_data.buff_type = LB_TO_SGL;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0)
- return TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
+ return ret;
}
-
-
}
return TEST_SUCCESS;
-
}
static int
@@ -1744,8 +1933,7 @@ test_compressdev_deflate_stateless_checksum(void)
rte_malloc(NULL, sizeof(struct rte_comp_xform), 0);
if (compress_xform == NULL) {
RTE_LOG(ERR, USER1, "Compress xform could not be created\n");
- ret = TEST_FAILED;
- return ret;
+ return TEST_FAILED;
}
memcpy(compress_xform, ts_params->def_comp_xform,
@@ -1756,8 +1944,7 @@ test_compressdev_deflate_stateless_checksum(void)
if (decompress_xform == NULL) {
RTE_LOG(ERR, USER1, "Decompress xform could not be created\n");
rte_free(compress_xform);
- ret = TEST_FAILED;
- return ret;
+ return TEST_FAILED;
}
memcpy(decompress_xform, ts_params->def_decomp_xform,
@@ -1773,11 +1960,12 @@ test_compressdev_deflate_stateless_checksum(void)
};
struct test_data_params test_data = {
- RTE_COMP_OP_STATELESS,
- LB_BOTH,
- ZLIB_DECOMPRESS,
- 0,
- 0
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATELESS,
+ .buff_type = LB_BOTH,
+ .zlib_dir = ZLIB_DECOMPRESS,
+ .out_of_space = 0,
+ .big_data = 0
};
/* Check if driver supports crc32 checksum and test */
@@ -1794,19 +1982,17 @@ test_compressdev_deflate_stateless_checksum(void)
* drivers decompression checksum
*/
test_data.zlib_dir = ZLIB_COMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
/* Generate compression and decompression
* checksum of selected driver
*/
test_data.zlib_dir = ZLIB_NONE;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
}
}
@@ -1823,18 +2009,16 @@ test_compressdev_deflate_stateless_checksum(void)
* drivers decompression checksum
*/
test_data.zlib_dir = ZLIB_COMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
/* Generate compression and decompression
* checksum of selected driver
*/
test_data.zlib_dir = ZLIB_NONE;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
}
}
@@ -1853,10 +2037,9 @@ test_compressdev_deflate_stateless_checksum(void)
* checksum of selected driver
*/
test_data.zlib_dir = ZLIB_NONE;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
}
}
@@ -1876,7 +2059,7 @@ test_compressdev_out_of_space_buffer(void)
uint16_t i;
const struct rte_compressdev_capabilities *capab;
- RTE_LOG(ERR, USER1, "This is a negative test errors are expected\n");
+ RTE_LOG(INFO, USER1, "This is a negative test, errors are expected\n");
capab = rte_compressdev_capability_get(0, RTE_COMP_ALGO_DEFLATE);
TEST_ASSERT(capab != NULL, "Failed to retrieve device capabilities");
@@ -1884,16 +2067,6 @@ test_compressdev_out_of_space_buffer(void)
if ((capab->comp_feature_flags & RTE_COMP_FF_HUFFMAN_FIXED) == 0)
return -ENOTSUP;
- struct rte_comp_xform *compress_xform =
- rte_malloc(NULL, sizeof(struct rte_comp_xform), 0);
-
- if (compress_xform == NULL) {
- RTE_LOG(ERR, USER1,
- "Compress xform could not be created\n");
- ret = TEST_FAILED;
- goto exit;
- }
-
struct interim_data_params int_data = {
&compress_test_bufs[0],
1,
@@ -1904,48 +2077,44 @@ test_compressdev_out_of_space_buffer(void)
};
struct test_data_params test_data = {
- RTE_COMP_OP_STATELESS,
- LB_BOTH,
- ZLIB_DECOMPRESS,
- 1, /* run out-of-space test */
- 0
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATELESS,
+ .buff_type = LB_BOTH,
+ .zlib_dir = ZLIB_DECOMPRESS,
+ .out_of_space = 1, /* run out-of-space test */
+ .big_data = 0
};
/* Compress with compressdev, decompress with Zlib */
test_data.zlib_dir = ZLIB_DECOMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
/* Compress with Zlib, decompress with compressdev */
test_data.zlib_dir = ZLIB_COMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
if (capab->comp_feature_flags & RTE_COMP_FF_OOP_SGL_IN_SGL_OUT) {
/* Compress with compressdev, decompress with Zlib */
test_data.zlib_dir = ZLIB_DECOMPRESS;
test_data.buff_type = SGL_BOTH;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
/* Compress with Zlib, decompress with compressdev */
test_data.zlib_dir = ZLIB_COMPRESS;
test_data.buff_type = SGL_BOTH;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
goto exit;
- }
}
ret = TEST_SUCCESS;
exit:
- rte_free(compress_xform);
return ret;
}
@@ -1954,7 +2123,7 @@ test_compressdev_deflate_stateless_dynamic_big(void)
{
struct comp_testsuite_params *ts_params = &testsuite_params;
uint16_t i = 0;
- int ret = TEST_SUCCESS;
+ int ret;
int j;
const struct rte_compressdev_capabilities *capab;
char *test_buffer = NULL;
@@ -1985,11 +2154,12 @@ test_compressdev_deflate_stateless_dynamic_big(void)
};
struct test_data_params test_data = {
- RTE_COMP_OP_STATELESS,
- SGL_BOTH,
- ZLIB_DECOMPRESS,
- 0,
- 1
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATELESS,
+ .buff_type = SGL_BOTH,
+ .zlib_dir = ZLIB_DECOMPRESS,
+ .out_of_space = 0,
+ .big_data = 1
};
ts_params->def_comp_xform->compress.deflate.huffman =
@@ -2003,25 +2173,304 @@ test_compressdev_deflate_stateless_dynamic_big(void)
/* Compress with compressdev, decompress with Zlib */
test_data.zlib_dir = ZLIB_DECOMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
- goto end;
- }
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
+ goto exit;
/* Compress with Zlib, decompress with compressdev */
test_data.zlib_dir = ZLIB_COMPRESS;
- if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
- ret = TEST_FAILED;
- goto end;
- }
+ ret = test_deflate_comp_decomp(&int_data, &test_data);
+ if (ret < 0)
+ goto exit;
+
+ ret = TEST_SUCCESS;
-end:
+exit:
ts_params->def_comp_xform->compress.deflate.huffman =
RTE_COMP_HUFFMAN_DEFAULT;
rte_free(test_buffer);
return ret;
}
+static int
+test_compressdev_deflate_stateful_decomp(void)
+{
+ struct comp_testsuite_params *ts_params = &testsuite_params;
+ int ret;
+ uint16_t i;
+ const struct rte_compressdev_capabilities *capab;
+
+ capab = rte_compressdev_capability_get(0, RTE_COMP_ALGO_DEFLATE);
+ TEST_ASSERT(capab != NULL, "Failed to retrieve device capabilities");
+
+ if (!(capab->comp_feature_flags & RTE_COMP_FF_STATEFUL_DECOMPRESSION))
+ return -ENOTSUP;
+
+ struct interim_data_params int_data = {
+ &compress_test_bufs[0],
+ 1,
+ &i,
+ &ts_params->def_comp_xform,
+ &ts_params->def_decomp_xform,
+ 1
+ };
+
+ struct test_data_params test_data = {
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATEFUL,
+ .buff_type = LB_BOTH,
+ .zlib_dir = ZLIB_COMPRESS,
+ .out_of_space = 0,
+ .big_data = 0,
+ .decompress_output_block_size = 2000,
+ .decompress_steps_max = 4
+ };
+
+ /* Compress with Zlib, decompress with compressdev */
+ if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
+ ret = TEST_FAILED;
+ goto exit;
+ }
+
+ if (capab->comp_feature_flags & RTE_COMP_FF_OOP_SGL_IN_SGL_OUT) {
+ /* Now test with SGL buffers */
+ test_data.buff_type = SGL_BOTH;
+ if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
+ ret = TEST_FAILED;
+ goto exit;
+ }
+ }
+
+ ret = TEST_SUCCESS;
+
+exit:
+ return ret;
+}
+
+static int
+test_compressdev_deflate_stateful_decomp_checksum(void)
+{
+ struct comp_testsuite_params *ts_params = &testsuite_params;
+ int ret;
+ uint16_t i;
+ const struct rte_compressdev_capabilities *capab;
+
+ capab = rte_compressdev_capability_get(0, RTE_COMP_ALGO_DEFLATE);
+ TEST_ASSERT(capab != NULL, "Failed to retrieve device capabilities");
+
+ if (!(capab->comp_feature_flags & RTE_COMP_FF_STATEFUL_DECOMPRESSION))
+ return -ENOTSUP;
+
+ /* Check if driver supports any checksum */
+ if (!(capab->comp_feature_flags &
+ (RTE_COMP_FF_CRC32_CHECKSUM | RTE_COMP_FF_ADLER32_CHECKSUM |
+ RTE_COMP_FF_CRC32_ADLER32_CHECKSUM)))
+ return -ENOTSUP;
+
+ struct rte_comp_xform *compress_xform =
+ rte_malloc(NULL, sizeof(struct rte_comp_xform), 0);
+ if (compress_xform == NULL) {
+ RTE_LOG(ERR, USER1, "Compress xform could not be created\n");
+ return TEST_FAILED;
+ }
+
+ memcpy(compress_xform, ts_params->def_comp_xform,
+ sizeof(struct rte_comp_xform));
+
+ struct rte_comp_xform *decompress_xform =
+ rte_malloc(NULL, sizeof(struct rte_comp_xform), 0);
+ if (decompress_xform == NULL) {
+ RTE_LOG(ERR, USER1, "Decompress xform could not be created\n");
+ rte_free(compress_xform);
+ return TEST_FAILED;
+ }
+
+ memcpy(decompress_xform, ts_params->def_decomp_xform,
+ sizeof(struct rte_comp_xform));
+
+ struct interim_data_params int_data = {
+ &compress_test_bufs[0],
+ 1,
+ &i,
+ &compress_xform,
+ &decompress_xform,
+ 1
+ };
+
+ struct test_data_params test_data = {
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATEFUL,
+ .buff_type = LB_BOTH,
+ .zlib_dir = ZLIB_COMPRESS,
+ .out_of_space = 0,
+ .big_data = 0,
+ .decompress_output_block_size = 2000,
+ .decompress_steps_max = 4
+ };
+
+ /* Check if driver supports crc32 checksum and test */
+ if (capab->comp_feature_flags & RTE_COMP_FF_CRC32_CHECKSUM) {
+ compress_xform->compress.chksum = RTE_COMP_CHECKSUM_CRC32;
+ decompress_xform->decompress.chksum = RTE_COMP_CHECKSUM_CRC32;
+ /* Compress with Zlib, decompress with compressdev */
+ test_data.buff_type = LB_BOTH;
+ if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
+ ret = TEST_FAILED;
+ goto exit;
+ }
+ if (capab->comp_feature_flags &
+ RTE_COMP_FF_OOP_SGL_IN_SGL_OUT) {
+ /* Now test with SGL buffers */
+ test_data.buff_type = SGL_BOTH;
+ if (test_deflate_comp_decomp(&int_data,
+ &test_data) < 0) {
+ ret = TEST_FAILED;
+ goto exit;
+ }
+ }
+ }
+
+ /* Check if driver supports adler32 checksum and test */
+ if (capab->comp_feature_flags & RTE_COMP_FF_ADLER32_CHECKSUM) {
+ compress_xform->compress.chksum = RTE_COMP_CHECKSUM_ADLER32;
+ decompress_xform->decompress.chksum = RTE_COMP_CHECKSUM_ADLER32;
+ /* Compress with Zlib, decompress with compressdev */
+ test_data.buff_type = LB_BOTH;
+ if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
+ ret = TEST_FAILED;
+ goto exit;
+ }
+ if (capab->comp_feature_flags &
+ RTE_COMP_FF_OOP_SGL_IN_SGL_OUT) {
+ /* Now test with SGL buffers */
+ test_data.buff_type = SGL_BOTH;
+ if (test_deflate_comp_decomp(&int_data,
+ &test_data) < 0) {
+ ret = TEST_FAILED;
+ goto exit;
+ }
+ }
+ }
+
+ /* Check if driver supports combined crc and adler checksum and test */
+ if (capab->comp_feature_flags & RTE_COMP_FF_CRC32_ADLER32_CHECKSUM) {
+ compress_xform->compress.chksum =
+ RTE_COMP_CHECKSUM_CRC32_ADLER32;
+ decompress_xform->decompress.chksum =
+ RTE_COMP_CHECKSUM_CRC32_ADLER32;
+ /* Zlib doesn't support combined checksum */
+ test_data.zlib_dir = ZLIB_NONE;
+ /* Compress stateless, decompress stateful with compressdev */
+ test_data.buff_type = LB_BOTH;
+ if (test_deflate_comp_decomp(&int_data, &test_data) < 0) {
+ ret = TEST_FAILED;
+ goto exit;
+ }
+ if (capab->comp_feature_flags &
+ RTE_COMP_FF_OOP_SGL_IN_SGL_OUT) {
+ /* Now test with SGL buffers */
+ test_data.buff_type = SGL_BOTH;
+ if (test_deflate_comp_decomp(&int_data,
+ &test_data) < 0) {
+ ret = TEST_FAILED;
+ goto exit;
+ }
+ }
+ }
+
+ ret = TEST_SUCCESS;
+
+exit:
+ rte_free(compress_xform);
+ rte_free(decompress_xform);
+ return ret;
+}
+
+static const struct rte_memzone *
+make_memzone(const char *name, size_t size)
+{
+ unsigned int socket_id = rte_socket_id();
+ char mz_name[RTE_MEMZONE_NAMESIZE];
+ const struct rte_memzone *memzone;
+
+ snprintf(mz_name, RTE_MEMZONE_NAMESIZE, "%s_%u", name, socket_id);
+ memzone = rte_memzone_lookup(mz_name);
+ if (memzone != NULL && memzone->len != size) {
+ rte_memzone_free(memzone);
+ memzone = NULL;
+ }
+ if (memzone == NULL) {
+ memzone = rte_memzone_reserve_aligned(mz_name, size, socket_id,
+ RTE_MEMZONE_IOVA_CONTIG, RTE_CACHE_LINE_SIZE);
+ if (memzone == NULL)
+ RTE_LOG(ERR, USER1, "Can't allocate memory zone %s",
+ mz_name);
+ }
+ return memzone;
+}
+
+static int
+test_compressdev_external_mbufs(void)
+{
+ struct comp_testsuite_params *ts_params = &testsuite_params;
+ size_t data_len = 0;
+ uint16_t i;
+ int ret = TEST_FAILED;
+
+ for (i = 0; i < RTE_DIM(compress_test_bufs); i++)
+ data_len = RTE_MAX(data_len, strlen(compress_test_bufs[i]) + 1);
+
+ struct interim_data_params int_data = {
+ NULL,
+ 1,
+ NULL,
+ &ts_params->def_comp_xform,
+ &ts_params->def_decomp_xform,
+ 1
+ };
+
+ struct test_data_params test_data = {
+ .compress_state = RTE_COMP_OP_STATELESS,
+ .decompress_state = RTE_COMP_OP_STATELESS,
+ .buff_type = LB_BOTH,
+ .zlib_dir = ZLIB_DECOMPRESS,
+ .out_of_space = 0,
+ .big_data = 0,
+ .use_external_mbufs = 1,
+ .inbuf_data_size = data_len,
+ .inbuf_memzone = make_memzone("inbuf", data_len),
+ .compbuf_memzone = make_memzone("compbuf", data_len *
+ COMPRESS_BUF_SIZE_RATIO),
+ .uncompbuf_memzone = make_memzone("decompbuf", data_len)
+ };
+
+ for (i = 0; i < RTE_DIM(compress_test_bufs); i++) {
+ /* prepare input data */
+ data_len = strlen(compress_test_bufs[i]) + 1;
+ rte_memcpy(test_data.inbuf_memzone->addr, compress_test_bufs[i],
+ data_len);
+ test_data.inbuf_data_size = data_len;
+ int_data.buf_idx = &i;
+
+ /* Compress with compressdev, decompress with Zlib */
+ test_data.zlib_dir = ZLIB_DECOMPRESS;
+ if (test_deflate_comp_decomp(&int_data, &test_data) < 0)
+ goto exit;
+
+ /* Compress with Zlib, decompress with compressdev */
+ test_data.zlib_dir = ZLIB_COMPRESS;
+ if (test_deflate_comp_decomp(&int_data, &test_data) < 0)
+ goto exit;
+ }
+
+ ret = TEST_SUCCESS;
+
+exit:
+ rte_memzone_free(test_data.inbuf_memzone);
+ rte_memzone_free(test_data.compbuf_memzone);
+ rte_memzone_free(test_data.uncompbuf_memzone);
+ return ret;
+}
static struct unit_test_suite compressdev_testsuite = {
.suite_name = "compressdev unit test suite",
@@ -2048,6 +2497,12 @@ static struct unit_test_suite compressdev_testsuite = {
test_compressdev_deflate_stateless_checksum),
TEST_CASE_ST(generic_ut_setup, generic_ut_teardown,
test_compressdev_out_of_space_buffer),
+ TEST_CASE_ST(generic_ut_setup, generic_ut_teardown,
+ test_compressdev_deflate_stateful_decomp),
+ TEST_CASE_ST(generic_ut_setup, generic_ut_teardown,
+ test_compressdev_deflate_stateful_decomp_checksum),
+ TEST_CASE_ST(generic_ut_setup, generic_ut_teardown,
+ test_compressdev_external_mbufs),
TEST_CASES_END() /**< NULL terminate unit test array */
}
};
diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c
index 4197feb..ffed298 100644
--- a/app/test/test_cryptodev.c
+++ b/app/test/test_cryptodev.c
@@ -38,6 +38,10 @@
#include "test_cryptodev_zuc_test_vectors.h"
#include "test_cryptodev_aead_test_vectors.h"
#include "test_cryptodev_hmac_test_vectors.h"
+#ifdef RTE_LIBRTE_SECURITY
+#include "test_cryptodev_security_pdcp_test_vectors.h"
+#include "test_cryptodev_security_pdcp_test_func.h"
+#endif
#define VDEV_ARGS_SIZE 100
#define MAX_NB_SESSIONS 4
@@ -65,8 +69,11 @@ struct crypto_unittest_params {
struct rte_crypto_sym_xform auth_xform;
struct rte_crypto_sym_xform aead_xform;
- struct rte_cryptodev_sym_session *sess;
-
+ union {
+ struct rte_cryptodev_sym_session *sess;
+ struct rte_security_session *sec_session;
+ };
+ enum rte_security_session_action_type type;
struct rte_crypto_op *op;
struct rte_mbuf *obuf, *ibuf;
@@ -473,7 +480,7 @@ testsuite_setup(void)
"Failed to configure cryptodev %u with %u qps",
dev_id, ts_params->conf.nb_queue_pairs);
- ts_params->qp_conf.nb_descriptors = DEFAULT_NUM_OPS_INFLIGHT;
+ ts_params->qp_conf.nb_descriptors = MAX_NUM_OPS_INFLIGHT;
ts_params->qp_conf.mp_session = ts_params->session_mpool;
ts_params->qp_conf.mp_session_private = ts_params->session_priv_mpool;
@@ -566,11 +573,21 @@ ut_teardown(void)
struct rte_cryptodev_stats stats;
/* free crypto session structure */
- if (ut_params->sess) {
- rte_cryptodev_sym_session_clear(ts_params->valid_devs[0],
- ut_params->sess);
- rte_cryptodev_sym_session_free(ut_params->sess);
- ut_params->sess = NULL;
+ if (ut_params->type == RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL) {
+ if (ut_params->sec_session) {
+ rte_security_session_destroy(rte_cryptodev_get_sec_ctx
+ (ts_params->valid_devs[0]),
+ ut_params->sec_session);
+ ut_params->sec_session = NULL;
+ }
+ } else {
+ if (ut_params->sess) {
+ rte_cryptodev_sym_session_clear(
+ ts_params->valid_devs[0],
+ ut_params->sess);
+ rte_cryptodev_sym_session_free(ut_params->sess);
+ ut_params->sess = NULL;
+ }
}
/* free crypto operation structure */
@@ -2331,6 +2348,25 @@ test_3DES_chain_octeontx_all(void)
}
static int
+test_AES_chain_nitrox_all(void)
+{
+ struct crypto_testsuite_params *ts_params = &testsuite_params;
+ int status;
+
+ status = test_blockcipher_all_tests(ts_params->mbuf_pool,
+ ts_params->op_mpool,
+ ts_params->session_mpool, ts_params->session_priv_mpool,
+ ts_params->valid_devs[0],
+ rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NITROX_PMD)),
+ BLKCIPHER_AES_CHAIN_TYPE);
+
+ TEST_ASSERT_EQUAL(status, 0, "Test failed");
+
+ return TEST_SUCCESS;
+}
+
+static int
test_3DES_cipheronly_octeontx_all(void)
{
struct crypto_testsuite_params *ts_params = &testsuite_params;
@@ -7021,6 +7057,582 @@ test_authenticated_encryption(const struct aead_test_data *tdata)
}
+#ifdef RTE_LIBRTE_SECURITY
+/* Basic algorithm run function for async inplace mode.
+ * Creates a session from input parameters and runs one operation
+ * on input_vec. Checks the output of the crypto operation against
+ * output_vec.
+ */
+static int
+test_pdcp_proto(int i, int oop,
+ enum rte_crypto_cipher_operation opc,
+ enum rte_crypto_auth_operation opa,
+ uint8_t *input_vec,
+ unsigned int input_vec_len,
+ uint8_t *output_vec,
+ unsigned int output_vec_len)
+{
+ struct crypto_testsuite_params *ts_params = &testsuite_params;
+ struct crypto_unittest_params *ut_params = &unittest_params;
+ uint8_t *plaintext;
+ int ret = TEST_SUCCESS;
+
+ /* Generate test mbuf data */
+ ut_params->ibuf = rte_pktmbuf_alloc(ts_params->mbuf_pool);
+
+ /* clear mbuf payload */
+ memset(rte_pktmbuf_mtod(ut_params->ibuf, uint8_t *), 0,
+ rte_pktmbuf_tailroom(ut_params->ibuf));
+
+ plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
+ input_vec_len);
+ memcpy(plaintext, input_vec, input_vec_len);
+
+ /* Out of place support */
+ if (oop) {
+ /*
+ * For out-op-place we need to alloc another mbuf
+ */
+ ut_params->obuf = rte_pktmbuf_alloc(ts_params->mbuf_pool);
+ rte_pktmbuf_append(ut_params->obuf, output_vec_len);
+ }
+
+ /* Set crypto type as IPSEC */
+ ut_params->type = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL;
+
+ /* Setup Cipher Parameters */
+ ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
+ ut_params->cipher_xform.cipher.algo = pdcp_test_params[i].cipher_alg;
+ ut_params->cipher_xform.cipher.op = opc;
+ ut_params->cipher_xform.cipher.key.data = pdcp_test_crypto_key[i];
+ ut_params->cipher_xform.cipher.key.length =
+ pdcp_test_params[i].cipher_key_len;
+ ut_params->cipher_xform.cipher.iv.length = 0;
+
+ /* Setup HMAC Parameters if ICV header is required */
+ if (pdcp_test_params[i].auth_alg != 0) {
+ ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
+ ut_params->auth_xform.next = NULL;
+ ut_params->auth_xform.auth.algo = pdcp_test_params[i].auth_alg;
+ ut_params->auth_xform.auth.op = opa;
+ ut_params->auth_xform.auth.key.data = pdcp_test_auth_key[i];
+ ut_params->auth_xform.auth.key.length =
+ pdcp_test_params[i].auth_key_len;
+
+ ut_params->cipher_xform.next = &ut_params->auth_xform;
+ } else {
+ ut_params->cipher_xform.next = NULL;
+ }
+
+ struct rte_security_session_conf sess_conf = {
+ .action_type = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
+ .protocol = RTE_SECURITY_PROTOCOL_PDCP,
+ {.pdcp = {
+ .bearer = pdcp_test_bearer[i],
+ .domain = pdcp_test_params[i].domain,
+ .pkt_dir = pdcp_test_packet_direction[i],
+ .sn_size = pdcp_test_data_sn_size[i],
+ .hfn = pdcp_test_hfn[i],
+ .hfn_threshold = pdcp_test_hfn_threshold[i],
+ } },
+ .crypto_xform = &ut_params->cipher_xform
+ };
+
+ struct rte_security_ctx *ctx = (struct rte_security_ctx *)
+ rte_cryptodev_get_sec_ctx(
+ ts_params->valid_devs[0]);
+
+ /* Create security session */
+ ut_params->sec_session = rte_security_session_create(ctx,
+ &sess_conf, ts_params->session_mpool);
+
+ if (!ut_params->sec_session) {
+ printf("TestCase %s()-%d line %d failed %s: ",
+ __func__, i, __LINE__, "Failed to allocate session");
+ ret = TEST_FAILED;
+ goto on_err;
+ }
+
+ /* Generate crypto op data structure */
+ ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+ RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+ if (!ut_params->op) {
+ printf("TestCase %s()-%d line %d failed %s: ",
+ __func__, i, __LINE__,
+ "Failed to allocate symmetric crypto operation struct");
+ ret = TEST_FAILED;
+ goto on_err;
+ }
+
+ rte_security_attach_session(ut_params->op, ut_params->sec_session);
+
+ /* set crypto operation source mbuf */
+ ut_params->op->sym->m_src = ut_params->ibuf;
+ if (oop)
+ ut_params->op->sym->m_dst = ut_params->obuf;
+
+ /* Process crypto operation */
+ if (process_crypto_request(ts_params->valid_devs[0], ut_params->op)
+ == NULL) {
+ printf("TestCase %s()-%d line %d failed %s: ",
+ __func__, i, __LINE__,
+ "failed to process sym crypto op");
+ ret = TEST_FAILED;
+ goto on_err;
+ }
+
+ if (ut_params->op->status != RTE_CRYPTO_OP_STATUS_SUCCESS) {
+ printf("TestCase %s()-%d line %d failed %s: ",
+ __func__, i, __LINE__, "crypto op processing failed");
+ ret = TEST_FAILED;
+ goto on_err;
+ }
+
+ /* Validate obuf */
+ uint8_t *ciphertext = rte_pktmbuf_mtod(ut_params->op->sym->m_src,
+ uint8_t *);
+ if (oop) {
+ ciphertext = rte_pktmbuf_mtod(ut_params->op->sym->m_dst,
+ uint8_t *);
+ }
+
+ if (memcmp(ciphertext, output_vec, output_vec_len)) {
+ printf("\n=======PDCP TestCase #%d failed: Data Mismatch ", i);
+ rte_hexdump(stdout, "encrypted", ciphertext, output_vec_len);
+ rte_hexdump(stdout, "reference", output_vec, output_vec_len);
+ ret = TEST_FAILED;
+ goto on_err;
+ }
+
+on_err:
+ rte_crypto_op_free(ut_params->op);
+ ut_params->op = NULL;
+
+ if (ut_params->sec_session)
+ rte_security_session_destroy(ctx, ut_params->sec_session);
+ ut_params->sec_session = NULL;
+
+ rte_pktmbuf_free(ut_params->ibuf);
+ ut_params->ibuf = NULL;
+ if (oop) {
+ rte_pktmbuf_free(ut_params->obuf);
+ ut_params->obuf = NULL;
+ }
+
+ return ret;
+}
+
+static int
+test_pdcp_proto_SGL(int i, int oop,
+ enum rte_crypto_cipher_operation opc,
+ enum rte_crypto_auth_operation opa,
+ uint8_t *input_vec,
+ unsigned int input_vec_len,
+ uint8_t *output_vec,
+ unsigned int output_vec_len,
+ uint32_t fragsz,
+ uint32_t fragsz_oop)
+{
+ struct crypto_testsuite_params *ts_params = &testsuite_params;
+ struct crypto_unittest_params *ut_params = &unittest_params;
+ uint8_t *plaintext;
+ struct rte_mbuf *buf, *buf_oop = NULL;
+ int ret = TEST_SUCCESS;
+ int to_trn = 0;
+ int to_trn_tbl[16];
+ int segs = 1;
+ unsigned int trn_data = 0;
+
+ if (fragsz > input_vec_len)
+ fragsz = input_vec_len;
+
+ uint16_t plaintext_len = fragsz;
+ uint16_t frag_size_oop = fragsz_oop ? fragsz_oop : fragsz;
+
+ if (fragsz_oop > output_vec_len)
+ frag_size_oop = output_vec_len;
+
+ int ecx = 0;
+ if (input_vec_len % fragsz != 0) {
+ if (input_vec_len / fragsz + 1 > 16)
+ return 1;
+ } else if (input_vec_len / fragsz > 16)
+ return 1;
+
+ /* Out of place support */
+ if (oop) {
+ /*
+ * For out-op-place we need to alloc another mbuf
+ */
+ ut_params->obuf = rte_pktmbuf_alloc(ts_params->mbuf_pool);
+ rte_pktmbuf_append(ut_params->obuf, frag_size_oop);
+ buf_oop = ut_params->obuf;
+ }
+
+ /* Generate test mbuf data */
+ ut_params->ibuf = rte_pktmbuf_alloc(ts_params->mbuf_pool);
+
+ /* clear mbuf payload */
+ memset(rte_pktmbuf_mtod(ut_params->ibuf, uint8_t *), 0,
+ rte_pktmbuf_tailroom(ut_params->ibuf));
+
+ plaintext = (uint8_t *)rte_pktmbuf_append(ut_params->ibuf,
+ plaintext_len);
+ memcpy(plaintext, input_vec, plaintext_len);
+ trn_data += plaintext_len;
+
+ buf = ut_params->ibuf;
+
+ /*
+ * Loop until no more fragments
+ */
+
+ while (trn_data < input_vec_len) {
+ ++segs;
+ to_trn = (input_vec_len - trn_data < fragsz) ?
+ (input_vec_len - trn_data) : fragsz;
+
+ to_trn_tbl[ecx++] = to_trn;
+
+ buf->next = rte_pktmbuf_alloc(ts_params->mbuf_pool);
+ buf = buf->next;
+
+ memset(rte_pktmbuf_mtod(buf, uint8_t *), 0,
+ rte_pktmbuf_tailroom(buf));
+
+ /* OOP */
+ if (oop && !fragsz_oop) {
+ buf_oop->next =
+ rte_pktmbuf_alloc(ts_params->mbuf_pool);
+ buf_oop = buf_oop->next;
+ memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
+ 0, rte_pktmbuf_tailroom(buf_oop));
+ rte_pktmbuf_append(buf_oop, to_trn);
+ }
+
+ plaintext = (uint8_t *)rte_pktmbuf_append(buf,
+ to_trn);
+
+ memcpy(plaintext, input_vec + trn_data, to_trn);
+ trn_data += to_trn;
+ }
+
+ ut_params->ibuf->nb_segs = segs;
+
+ segs = 1;
+ if (fragsz_oop && oop) {
+ to_trn = 0;
+ ecx = 0;
+
+ trn_data = frag_size_oop;
+ while (trn_data < output_vec_len) {
+ ++segs;
+ to_trn =
+ (output_vec_len - trn_data <
+ frag_size_oop) ?
+ (output_vec_len - trn_data) :
+ frag_size_oop;
+
+ to_trn_tbl[ecx++] = to_trn;
+
+ buf_oop->next =
+ rte_pktmbuf_alloc(ts_params->mbuf_pool);
+ buf_oop = buf_oop->next;
+ memset(rte_pktmbuf_mtod(buf_oop, uint8_t *),
+ 0, rte_pktmbuf_tailroom(buf_oop));
+ rte_pktmbuf_append(buf_oop, to_trn);
+
+ trn_data += to_trn;
+ }
+ ut_params->obuf->nb_segs = segs;
+ }
+
+ ut_params->type = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL;
+
+ /* Setup Cipher Parameters */
+ ut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;
+ ut_params->cipher_xform.cipher.algo = pdcp_test_params[i].cipher_alg;
+ ut_params->cipher_xform.cipher.op = opc;
+ ut_params->cipher_xform.cipher.key.data = pdcp_test_crypto_key[i];
+ ut_params->cipher_xform.cipher.key.length =
+ pdcp_test_params[i].cipher_key_len;
+ ut_params->cipher_xform.cipher.iv.length = 0;
+
+ /* Setup HMAC Parameters if ICV header is required */
+ if (pdcp_test_params[i].auth_alg != 0) {
+ ut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;
+ ut_params->auth_xform.next = NULL;
+ ut_params->auth_xform.auth.algo = pdcp_test_params[i].auth_alg;
+ ut_params->auth_xform.auth.op = opa;
+ ut_params->auth_xform.auth.key.data = pdcp_test_auth_key[i];
+ ut_params->auth_xform.auth.key.length =
+ pdcp_test_params[i].auth_key_len;
+
+ ut_params->cipher_xform.next = &ut_params->auth_xform;
+ } else {
+ ut_params->cipher_xform.next = NULL;
+ }
+
+ struct rte_security_session_conf sess_conf = {
+ .action_type = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,
+ .protocol = RTE_SECURITY_PROTOCOL_PDCP,
+ {.pdcp = {
+ .bearer = pdcp_test_bearer[i],
+ .domain = pdcp_test_params[i].domain,
+ .pkt_dir = pdcp_test_packet_direction[i],
+ .sn_size = pdcp_test_data_sn_size[i],
+ .hfn = pdcp_test_hfn[i],
+ .hfn_threshold = pdcp_test_hfn_threshold[i],
+ } },
+ .crypto_xform = &ut_params->cipher_xform
+ };
+
+ struct rte_security_ctx *ctx = (struct rte_security_ctx *)
+ rte_cryptodev_get_sec_ctx(
+ ts_params->valid_devs[0]);
+
+ /* Create security session */
+ ut_params->sec_session = rte_security_session_create(ctx,
+ &sess_conf, ts_params->session_mpool);
+
+ if (!ut_params->sec_session) {
+ printf("TestCase %s()-%d line %d failed %s: ",
+ __func__, i, __LINE__, "Failed to allocate session");
+ ret = TEST_FAILED;
+ goto on_err;
+ }
+
+ /* Generate crypto op data structure */
+ ut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,
+ RTE_CRYPTO_OP_TYPE_SYMMETRIC);
+ if (!ut_params->op) {
+ printf("TestCase %s()-%d line %d failed %s: ",
+ __func__, i, __LINE__,
+ "Failed to allocate symmetric crypto operation struct");
+ ret = TEST_FAILED;
+ goto on_err;
+ }
+
+ rte_security_attach_session(ut_params->op, ut_params->sec_session);
+
+ /* set crypto operation source mbuf */
+ ut_params->op->sym->m_src = ut_params->ibuf;
+ if (oop)
+ ut_params->op->sym->m_dst = ut_params->obuf;
+
+ /* Process crypto operation */
+ if (process_crypto_request(ts_params->valid_devs[0], ut_params->op)
+ == NULL) {
+ printf("TestCase %s()-%d line %d failed %s: ",
+ __func__, i, __LINE__,
+ "failed to process sym crypto op");
+ ret = TEST_FAILED;
+ goto on_err;
+ }
+
+ if (ut_params->op->status != RTE_CRYPTO_OP_STATUS_SUCCESS) {
+ printf("TestCase %s()-%d line %d failed %s: ",
+ __func__, i, __LINE__, "crypto op processing failed");
+ ret = TEST_FAILED;
+ goto on_err;
+ }
+
+ /* Validate obuf */
+ uint8_t *ciphertext = rte_pktmbuf_mtod(ut_params->op->sym->m_src,
+ uint8_t *);
+ if (oop) {
+ ciphertext = rte_pktmbuf_mtod(ut_params->op->sym->m_dst,
+ uint8_t *);
+ }
+ if (fragsz_oop)
+ fragsz = frag_size_oop;
+ if (memcmp(ciphertext, output_vec, fragsz)) {
+ printf("\n=======PDCP TestCase #%d failed: Data Mismatch ", i);
+ rte_hexdump(stdout, "encrypted", ciphertext, fragsz);
+ rte_hexdump(stdout, "reference", output_vec, fragsz);
+ ret = TEST_FAILED;
+ goto on_err;
+ }
+
+ buf = ut_params->op->sym->m_src->next;
+ if (oop)
+ buf = ut_params->op->sym->m_dst->next;
+
+ unsigned int off = fragsz;
+
+ ecx = 0;
+ while (buf) {
+ ciphertext = rte_pktmbuf_mtod(buf,
+ uint8_t *);
+ if (memcmp(ciphertext, output_vec + off, to_trn_tbl[ecx])) {
+ printf("\n=======PDCP TestCase #%d failed: Data Mismatch ", i);
+ rte_hexdump(stdout, "encrypted", ciphertext, to_trn_tbl[ecx]);
+ rte_hexdump(stdout, "reference", output_vec + off,
+ to_trn_tbl[ecx]);
+ ret = TEST_FAILED;
+ goto on_err;
+ }
+ off += to_trn_tbl[ecx++];
+ buf = buf->next;
+ }
+on_err:
+ rte_crypto_op_free(ut_params->op);
+ ut_params->op = NULL;
+
+ if (ut_params->sec_session)
+ rte_security_session_destroy(ctx, ut_params->sec_session);
+ ut_params->sec_session = NULL;
+
+ rte_pktmbuf_free(ut_params->ibuf);
+ ut_params->ibuf = NULL;
+ if (oop) {
+ rte_pktmbuf_free(ut_params->obuf);
+ ut_params->obuf = NULL;
+ }
+
+ return ret;
+}
+
+int
+test_pdcp_proto_cplane_encap(int i)
+{
+ return test_pdcp_proto(i, 0,
+ RTE_CRYPTO_CIPHER_OP_ENCRYPT,
+ RTE_CRYPTO_AUTH_OP_GENERATE,
+ pdcp_test_data_in[i],
+ pdcp_test_data_in_len[i],
+ pdcp_test_data_out[i],
+ pdcp_test_data_in_len[i]+4);
+}
+
+int
+test_pdcp_proto_uplane_encap(int i)
+{
+ return test_pdcp_proto(i, 0,
+ RTE_CRYPTO_CIPHER_OP_ENCRYPT,
+ RTE_CRYPTO_AUTH_OP_GENERATE,
+ pdcp_test_data_in[i],
+ pdcp_test_data_in_len[i],
+ pdcp_test_data_out[i],
+ pdcp_test_data_in_len[i]);
+
+}
+
+int
+test_pdcp_proto_uplane_encap_with_int(int i)
+{
+ return test_pdcp_proto(i, 0,
+ RTE_CRYPTO_CIPHER_OP_ENCRYPT,
+ RTE_CRYPTO_AUTH_OP_GENERATE,
+ pdcp_test_data_in[i],
+ pdcp_test_data_in_len[i],
+ pdcp_test_data_out[i],
+ pdcp_test_data_in_len[i] + 4);
+}
+
+int
+test_pdcp_proto_cplane_decap(int i)
+{
+ return test_pdcp_proto(i, 0,
+ RTE_CRYPTO_CIPHER_OP_DECRYPT,
+ RTE_CRYPTO_AUTH_OP_VERIFY,
+ pdcp_test_data_out[i],
+ pdcp_test_data_in_len[i] + 4,
+ pdcp_test_data_in[i],
+ pdcp_test_data_in_len[i]);
+}
+
+int
+test_pdcp_proto_uplane_decap(int i)
+{
+ return test_pdcp_proto(i, 0,
+ RTE_CRYPTO_CIPHER_OP_DECRYPT,
+ RTE_CRYPTO_AUTH_OP_VERIFY,
+ pdcp_test_data_out[i],
+ pdcp_test_data_in_len[i],
+ pdcp_test_data_in[i],
+ pdcp_test_data_in_len[i]);
+}
+
+int
+test_pdcp_proto_uplane_decap_with_int(int i)
+{
+ return test_pdcp_proto(i, 0,
+ RTE_CRYPTO_CIPHER_OP_DECRYPT,
+ RTE_CRYPTO_AUTH_OP_VERIFY,
+ pdcp_test_data_out[i],
+ pdcp_test_data_in_len[i] + 4,
+ pdcp_test_data_in[i],
+ pdcp_test_data_in_len[i]);
+}
+
+static int
+test_PDCP_PROTO_SGL_in_place_32B(void)
+{
+ /* i can be used for running any PDCP case
+ * In this case it is uplane 12-bit AES-SNOW DL encap
+ */
+ int i = PDCP_UPLANE_12BIT_OFFSET + AES_ENC + SNOW_AUTH + DOWNLINK;
+ return test_pdcp_proto_SGL(i, IN_PLACE,
+ RTE_CRYPTO_CIPHER_OP_ENCRYPT,
+ RTE_CRYPTO_AUTH_OP_GENERATE,
+ pdcp_test_data_in[i],
+ pdcp_test_data_in_len[i],
+ pdcp_test_data_out[i],
+ pdcp_test_data_in_len[i]+4,
+ 32, 0);
+}
+static int
+test_PDCP_PROTO_SGL_oop_32B_128B(void)
+{
+ /* i can be used for running any PDCP case
+ * In this case it is uplane 18-bit NULL-NULL DL encap
+ */
+ int i = PDCP_UPLANE_18BIT_OFFSET + NULL_ENC + NULL_AUTH + DOWNLINK;
+ return test_pdcp_proto_SGL(i, OUT_OF_PLACE,
+ RTE_CRYPTO_CIPHER_OP_ENCRYPT,
+ RTE_CRYPTO_AUTH_OP_GENERATE,
+ pdcp_test_data_in[i],
+ pdcp_test_data_in_len[i],
+ pdcp_test_data_out[i],
+ pdcp_test_data_in_len[i]+4,
+ 32, 128);
+}
+static int
+test_PDCP_PROTO_SGL_oop_32B_40B(void)
+{
+ /* i can be used for running any PDCP case
+ * In this case it is uplane 18-bit AES DL encap
+ */
+ int i = PDCP_UPLANE_OFFSET + AES_ENC + EIGHTEEN_BIT_SEQ_NUM_OFFSET
+ + DOWNLINK;
+ return test_pdcp_proto_SGL(i, OUT_OF_PLACE,
+ RTE_CRYPTO_CIPHER_OP_ENCRYPT,
+ RTE_CRYPTO_AUTH_OP_GENERATE,
+ pdcp_test_data_in[i],
+ pdcp_test_data_in_len[i],
+ pdcp_test_data_out[i],
+ pdcp_test_data_in_len[i],
+ 32, 40);
+}
+static int
+test_PDCP_PROTO_SGL_oop_128B_32B(void)
+{
+ /* i can be used for running any PDCP case
+ * In this case it is cplane 12-bit AES-ZUC DL encap
+ */
+ int i = PDCP_CPLANE_LONG_SN_OFFSET + AES_ENC + ZUC_AUTH + DOWNLINK;
+ return test_pdcp_proto_SGL(i, OUT_OF_PLACE,
+ RTE_CRYPTO_CIPHER_OP_ENCRYPT,
+ RTE_CRYPTO_AUTH_OP_GENERATE,
+ pdcp_test_data_in[i],
+ pdcp_test_data_in_len[i],
+ pdcp_test_data_out[i],
+ pdcp_test_data_in_len[i]+4,
+ 128, 32);
+}
+#endif
+
static int
test_AES_GCM_authenticated_encryption_test_case_1(void)
{
@@ -7064,6 +7676,12 @@ test_AES_GCM_authenticated_encryption_test_case_7(void)
}
static int
+test_AES_GCM_authenticated_encryption_test_case_8(void)
+{
+ return test_authenticated_encryption(&gcm_test_case_8);
+}
+
+static int
test_AES_GCM_auth_encryption_test_case_192_1(void)
{
return test_authenticated_encryption(&gcm_test_case_192_1);
@@ -7160,6 +7778,93 @@ test_AES_GCM_auth_encryption_test_case_aad_2(void)
}
static int
+test_AES_GCM_auth_encryption_fail_iv_corrupt(void)
+{
+ struct aead_test_data tdata;
+ int res;
+
+ RTE_LOG(INFO, USER1, "This is a negative test, errors are expected\n");
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ tdata.iv.data[0] += 1;
+ res = test_authenticated_encryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "encryption not failed");
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_GCM_auth_encryption_fail_in_data_corrupt(void)
+{
+ struct aead_test_data tdata;
+ int res;
+
+ RTE_LOG(INFO, USER1, "This is a negative test, errors are expected\n");
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ tdata.plaintext.data[0] += 1;
+ res = test_authenticated_encryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "encryption not failed");
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_GCM_auth_encryption_fail_out_data_corrupt(void)
+{
+ struct aead_test_data tdata;
+ int res;
+
+ RTE_LOG(INFO, USER1, "This is a negative test, errors are expected\n");
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ tdata.ciphertext.data[0] += 1;
+ res = test_authenticated_encryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "encryption not failed");
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_GCM_auth_encryption_fail_aad_len_corrupt(void)
+{
+ struct aead_test_data tdata;
+ int res;
+
+ RTE_LOG(INFO, USER1, "This is a negative test, errors are expected\n");
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ tdata.aad.len += 1;
+ res = test_authenticated_encryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "encryption not failed");
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_GCM_auth_encryption_fail_aad_corrupt(void)
+{
+ struct aead_test_data tdata;
+ uint8_t aad[gcm_test_case_7.aad.len];
+ int res;
+
+ RTE_LOG(INFO, USER1, "This is a negative test, errors are expected\n");
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ memcpy(aad, gcm_test_case_7.aad.data, gcm_test_case_7.aad.len);
+ aad[0] += 1;
+ tdata.aad.data = aad;
+ res = test_authenticated_encryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "encryption not failed");
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_GCM_auth_encryption_fail_tag_corrupt(void)
+{
+ struct aead_test_data tdata;
+ int res;
+
+ RTE_LOG(INFO, USER1, "This is a negative test, errors are expected\n");
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ tdata.auth_tag.data[0] += 1;
+ res = test_authenticated_encryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "encryption not failed");
+ return TEST_SUCCESS;
+}
+
+static int
test_authenticated_decryption(const struct aead_test_data *tdata)
{
struct crypto_testsuite_params *ts_params = &testsuite_params;
@@ -7227,6 +7932,7 @@ test_authenticated_decryption(const struct aead_test_data *tdata)
TEST_ASSERT_EQUAL(ut_params->op->status,
RTE_CRYPTO_OP_STATUS_SUCCESS,
"Authentication failed");
+
return 0;
}
@@ -7273,6 +7979,12 @@ test_AES_GCM_authenticated_decryption_test_case_7(void)
}
static int
+test_AES_GCM_authenticated_decryption_test_case_8(void)
+{
+ return test_authenticated_decryption(&gcm_test_case_8);
+}
+
+static int
test_AES_GCM_auth_decryption_test_case_192_1(void)
{
return test_authenticated_decryption(&gcm_test_case_192_1);
@@ -7369,6 +8081,88 @@ test_AES_GCM_auth_decryption_test_case_aad_2(void)
}
static int
+test_AES_GCM_auth_decryption_fail_iv_corrupt(void)
+{
+ struct aead_test_data tdata;
+ int res;
+
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ tdata.iv.data[0] += 1;
+ res = test_authenticated_decryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "decryption not failed");
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_GCM_auth_decryption_fail_in_data_corrupt(void)
+{
+ struct aead_test_data tdata;
+ int res;
+
+ RTE_LOG(INFO, USER1, "This is a negative test, errors are expected\n");
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ tdata.plaintext.data[0] += 1;
+ res = test_authenticated_decryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "decryption not failed");
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_GCM_auth_decryption_fail_out_data_corrupt(void)
+{
+ struct aead_test_data tdata;
+ int res;
+
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ tdata.ciphertext.data[0] += 1;
+ res = test_authenticated_decryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "decryption not failed");
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_GCM_auth_decryption_fail_aad_len_corrupt(void)
+{
+ struct aead_test_data tdata;
+ int res;
+
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ tdata.aad.len += 1;
+ res = test_authenticated_decryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "decryption not failed");
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_GCM_auth_decryption_fail_aad_corrupt(void)
+{
+ struct aead_test_data tdata;
+ uint8_t aad[gcm_test_case_7.aad.len];
+ int res;
+
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ memcpy(aad, gcm_test_case_7.aad.data, gcm_test_case_7.aad.len);
+ aad[0] += 1;
+ tdata.aad.data = aad;
+ res = test_authenticated_decryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "decryption not failed");
+ return TEST_SUCCESS;
+}
+
+static int
+test_AES_GCM_auth_decryption_fail_tag_corrupt(void)
+{
+ struct aead_test_data tdata;
+ int res;
+
+ memcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));
+ tdata.auth_tag.data[0] += 1;
+ res = test_authenticated_decryption(&tdata);
+ TEST_ASSERT_EQUAL(res, TEST_FAILED, "authentication not failed");
+ return TEST_SUCCESS;
+}
+
+static int
test_authenticated_encryption_oop(const struct aead_test_data *tdata)
{
struct crypto_testsuite_params *ts_params = &testsuite_params;
@@ -9410,8 +10204,8 @@ test_authentication_verify_fail_when_data_corruption(
ut_params->op = process_crypto_request(ts_params->valid_devs[0],
ut_params->op);
TEST_ASSERT_NOT_NULL(ut_params->op, "failed crypto process");
- TEST_ASSERT_EQUAL(ut_params->op->status,
- RTE_CRYPTO_OP_STATUS_AUTH_FAILED,
+ TEST_ASSERT_NOT_EQUAL(ut_params->op->status,
+ RTE_CRYPTO_OP_STATUS_SUCCESS,
"authentication not failed");
ut_params->obuf = ut_params->op->sym->m_src;
@@ -9471,8 +10265,8 @@ test_authentication_verify_GMAC_fail_when_corruption(
ut_params->op = process_crypto_request(ts_params->valid_devs[0],
ut_params->op);
TEST_ASSERT_NOT_NULL(ut_params->op, "failed crypto process");
- TEST_ASSERT_EQUAL(ut_params->op->status,
- RTE_CRYPTO_OP_STATUS_AUTH_FAILED,
+ TEST_ASSERT_NOT_EQUAL(ut_params->op->status,
+ RTE_CRYPTO_OP_STATUS_SUCCESS,
"authentication not failed");
ut_params->obuf = ut_params->op->sym->m_src;
@@ -9532,8 +10326,8 @@ test_authenticated_decryption_fail_when_corruption(
ut_params->op);
TEST_ASSERT_NOT_NULL(ut_params->op, "failed crypto process");
- TEST_ASSERT_EQUAL(ut_params->op->status,
- RTE_CRYPTO_OP_STATUS_AUTH_FAILED,
+ TEST_ASSERT_NOT_EQUAL(ut_params->op->status,
+ RTE_CRYPTO_OP_STATUS_SUCCESS,
"authentication not failed");
ut_params->obuf = ut_params->op->sym->m_src;
@@ -10315,6 +11109,8 @@ static struct unit_test_suite cryptodev_qat_testsuite = {
test_AES_GCM_authenticated_encryption_test_case_6),
TEST_CASE_ST(ut_setup, ut_teardown,
test_AES_GCM_authenticated_encryption_test_case_7),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_authenticated_encryption_test_case_8),
/** AES GCM Authenticated Decryption */
TEST_CASE_ST(ut_setup, ut_teardown,
@@ -10331,6 +11127,8 @@ static struct unit_test_suite cryptodev_qat_testsuite = {
test_AES_GCM_authenticated_decryption_test_case_6),
TEST_CASE_ST(ut_setup, ut_teardown,
test_AES_GCM_authenticated_decryption_test_case_7),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_authenticated_decryption_test_case_8),
/** AES GCM Authenticated Encryption 192 bits key */
TEST_CASE_ST(ut_setup, ut_teardown,
@@ -10380,6 +11178,22 @@ static struct unit_test_suite cryptodev_qat_testsuite = {
TEST_CASE_ST(ut_setup, ut_teardown,
test_AES_GCM_auth_encryption_test_case_256_7),
+ /** AES GCM Authenticated Decryption 256 bits key */
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_test_case_256_1),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_test_case_256_2),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_test_case_256_3),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_test_case_256_4),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_test_case_256_5),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_test_case_256_6),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_test_case_256_7),
+
/** AES GMAC Authentication */
TEST_CASE_ST(ut_setup, ut_teardown,
test_AES_GMAC_authentication_test_case_1),
@@ -10603,6 +11417,30 @@ static struct unit_test_suite cryptodev_qat_testsuite = {
TEST_CASE_ST(ut_setup, ut_teardown,
authentication_verify_HMAC_SHA1_fail_tag_corrupt),
TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_encryption_fail_iv_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_encryption_fail_in_data_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_encryption_fail_out_data_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_encryption_fail_aad_len_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_encryption_fail_aad_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_encryption_fail_tag_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_fail_iv_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_fail_in_data_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_fail_out_data_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_fail_aad_len_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_fail_aad_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_GCM_auth_decryption_fail_tag_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
authentication_verify_AES128_GMAC_fail_data_corrupt),
TEST_CASE_ST(ut_setup, ut_teardown,
authentication_verify_AES128_GMAC_fail_tag_corrupt),
@@ -11433,6 +12271,28 @@ static struct unit_test_suite cryptodev_dpaa_sec_testsuite = {
TEST_CASE_ST(ut_setup, ut_teardown,
test_authonly_dpaa_sec_all),
+#ifdef RTE_LIBRTE_SECURITY
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_cplane_encap_all),
+
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_cplane_decap_all),
+
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_uplane_encap_all),
+
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_uplane_decap_all),
+
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_SGL_in_place_32B),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_SGL_oop_32B_128B),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_SGL_oop_32B_40B),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_SGL_oop_128B_32B),
+#endif
/** AES GCM Authenticated Encryption */
TEST_CASE_ST(ut_setup, ut_teardown,
test_AES_GCM_authenticated_encryption_test_case_1),
@@ -11513,6 +12373,16 @@ static struct unit_test_suite cryptodev_dpaa_sec_testsuite = {
TEST_CASE_ST(ut_setup, ut_teardown,
test_AES_GCM_auth_encrypt_SGL_out_of_place_1500B_2000B),
+ /** Negative tests */
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ authentication_verify_HMAC_SHA1_fail_data_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ authentication_verify_HMAC_SHA1_fail_tag_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ auth_decryption_AES128CBC_HMAC_SHA1_fail_data_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ auth_decryption_AES128CBC_HMAC_SHA1_fail_tag_corrupt),
+
TEST_CASES_END() /**< NULL terminate unit test array */
}
};
@@ -11538,6 +12408,28 @@ static struct unit_test_suite cryptodev_dpaa2_sec_testsuite = {
TEST_CASE_ST(ut_setup, ut_teardown,
test_authonly_dpaa2_sec_all),
+#ifdef RTE_LIBRTE_SECURITY
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_cplane_encap_all),
+
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_cplane_decap_all),
+
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_uplane_encap_all),
+
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_uplane_decap_all),
+
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_SGL_in_place_32B),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_SGL_oop_32B_128B),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_SGL_oop_32B_40B),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_PDCP_PROTO_SGL_oop_128B_32B),
+#endif
/** AES GCM Authenticated Encryption */
TEST_CASE_ST(ut_setup, ut_teardown,
test_AES_GCM_authenticated_encryption_test_case_1),
@@ -11650,6 +12542,80 @@ static struct unit_test_suite cryptodev_dpaa2_sec_testsuite = {
TEST_CASE_ST(ut_setup, ut_teardown,
test_AES_GCM_auth_encrypt_SGL_out_of_place_1500B_2000B),
+ /** SNOW 3G encrypt only (UEA2) */
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_encryption_test_case_1),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_encryption_test_case_2),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_encryption_test_case_3),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_encryption_test_case_4),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_encryption_test_case_5),
+
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_encryption_test_case_1_oop),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_decryption_test_case_1_oop),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_encryption_test_case_1_oop_sgl),
+
+ /** SNOW 3G decrypt only (UEA2) */
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_decryption_test_case_1),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_decryption_test_case_2),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_decryption_test_case_3),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_decryption_test_case_4),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_decryption_test_case_5),
+
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_hash_generate_test_case_1),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_hash_generate_test_case_2),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_hash_generate_test_case_3),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_hash_verify_test_case_1),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_hash_verify_test_case_2),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_snow3g_hash_verify_test_case_3),
+
+ /** ZUC encrypt only (EEA3) */
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_zuc_encryption_test_case_1),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_zuc_encryption_test_case_2),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_zuc_encryption_test_case_3),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_zuc_encryption_test_case_4),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_zuc_encryption_test_case_5),
+
+ /** ZUC authenticate (EIA3) */
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_zuc_hash_generate_test_case_6),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_zuc_hash_generate_test_case_7),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_zuc_hash_generate_test_case_8),
+
+ /** Negative tests */
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ authentication_verify_HMAC_SHA1_fail_data_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ authentication_verify_HMAC_SHA1_fail_tag_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ auth_decryption_AES128CBC_HMAC_SHA1_fail_data_corrupt),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ auth_decryption_AES128CBC_HMAC_SHA1_fail_tag_corrupt),
+
TEST_CASES_END() /**< NULL terminate unit test array */
}
};
@@ -11969,6 +12935,22 @@ static struct unit_test_suite cryptodev_octeontx_testsuite = {
}
};
+static struct unit_test_suite cryptodev_nitrox_testsuite = {
+ .suite_name = "Crypto NITROX Unit Test Suite",
+ .setup = testsuite_setup,
+ .teardown = testsuite_teardown,
+ .unit_test_cases = {
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_device_configure_invalid_dev_id),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_device_configure_invalid_queue_pair_ids),
+ TEST_CASE_ST(ut_setup, ut_teardown,
+ test_AES_chain_nitrox_all),
+
+ TEST_CASES_END() /**< NULL terminate unit test array */
+ }
+};
+
static int
test_cryptodev_qat(void /*argv __rte_unused, int argc __rte_unused*/)
{
@@ -12252,6 +13234,22 @@ test_cryptodev_caam_jr(void /*argv __rte_unused, int argc __rte_unused*/)
return unit_test_suite_runner(&cryptodev_caam_jr_testsuite);
}
+static int
+test_cryptodev_nitrox(void)
+{
+ gbl_driver_id = rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NITROX_PMD));
+
+ if (gbl_driver_id == -1) {
+ RTE_LOG(ERR, USER1, "NITROX PMD must be loaded. Check if "
+ "CONFIG_RTE_LIBRTE_PMD_NITROX is enabled "
+ "in config file to run this testsuite.\n");
+ return TEST_FAILED;
+ }
+
+ return unit_test_suite_runner(&cryptodev_nitrox_testsuite);
+}
+
REGISTER_TEST_COMMAND(cryptodev_qat_autotest, test_cryptodev_qat);
REGISTER_TEST_COMMAND(cryptodev_aesni_mb_autotest, test_cryptodev_aesni_mb);
REGISTER_TEST_COMMAND(cryptodev_openssl_autotest, test_cryptodev_openssl);
@@ -12268,3 +13266,4 @@ REGISTER_TEST_COMMAND(cryptodev_ccp_autotest, test_cryptodev_ccp);
REGISTER_TEST_COMMAND(cryptodev_virtio_autotest, test_cryptodev_virtio);
REGISTER_TEST_COMMAND(cryptodev_octeontx_autotest, test_cryptodev_octeontx);
REGISTER_TEST_COMMAND(cryptodev_caam_jr_autotest, test_cryptodev_caam_jr);
+REGISTER_TEST_COMMAND(cryptodev_nitrox_autotest, test_cryptodev_nitrox);
diff --git a/app/test/test_cryptodev.h b/app/test/test_cryptodev.h
index 14b54dc..d20586e 100644
--- a/app/test/test_cryptodev.h
+++ b/app/test/test_cryptodev.h
@@ -67,6 +67,7 @@
#define CRYPTODEV_NAME_VIRTIO_PMD crypto_virtio
#define CRYPTODEV_NAME_OCTEONTX_SYM_PMD crypto_octeontx
#define CRYPTODEV_NAME_CAAM_JR_PMD crypto_caam_jr
+#define CRYPTODEV_NAME_NITROX_PMD crypto_nitrox_sym
/**
* Write (spread) data from buffer to mbuf data
diff --git a/app/test/test_cryptodev_aes_test_vectors.h b/app/test/test_cryptodev_aes_test_vectors.h
index ee4fdc9..46239ef 100644
--- a/app/test/test_cryptodev_aes_test_vectors.h
+++ b/app/test/test_cryptodev_aes_test_vectors.h
@@ -1537,7 +1537,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
.op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
.feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
.pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB |
- BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CTR HMAC-SHA1 Encryption Digest",
@@ -1638,7 +1639,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR |
BLOCKCIPHER_TEST_TARGET_PMD_MVSAM |
BLOCKCIPHER_TEST_TARGET_PMD_CCP |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA1 Encryption Digest "
@@ -1647,7 +1649,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
.op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
.pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 |
BLOCKCIPHER_TEST_TARGET_PMD_MVSAM |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA1 Encryption Digest "
@@ -1663,7 +1666,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC |
BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC |
BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA1 Decryption Digest "
@@ -1680,7 +1684,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR |
BLOCKCIPHER_TEST_TARGET_PMD_MVSAM |
BLOCKCIPHER_TEST_TARGET_PMD_CCP |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA1 Decryption Digest "
@@ -1691,7 +1696,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
.pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_DPAA2_SEC |
BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC |
BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA1 Decryption Digest "
@@ -1700,7 +1706,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
.op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
.pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 |
BLOCKCIPHER_TEST_TARGET_PMD_MVSAM |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA256 Encryption Digest",
@@ -1716,7 +1723,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR |
BLOCKCIPHER_TEST_TARGET_PMD_MVSAM |
BLOCKCIPHER_TEST_TARGET_PMD_CCP |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA256 Encryption Digest "
@@ -1725,7 +1733,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
.op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
.pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 |
BLOCKCIPHER_TEST_TARGET_PMD_MVSAM |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA256 Decryption Digest "
@@ -1741,7 +1750,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC |
BLOCKCIPHER_TEST_TARGET_PMD_MVSAM |
BLOCKCIPHER_TEST_TARGET_PMD_CCP |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA256 Decryption Digest "
@@ -1750,7 +1760,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
.op_mask = BLOCKCIPHER_TEST_OP_AUTH_VERIFY_DEC,
.pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_ARMV8 |
BLOCKCIPHER_TEST_TARGET_PMD_MVSAM |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA512 Encryption Digest",
@@ -1850,7 +1861,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC |
BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR |
BLOCKCIPHER_TEST_TARGET_PMD_MB |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA1 Encryption Digest "
@@ -1859,7 +1871,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
.op_mask = BLOCKCIPHER_TEST_OP_ENC_AUTH_GEN,
.feature_mask = BLOCKCIPHER_TEST_FEATURE_OOP,
.pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_MB |
- BLOCKCIPHER_TEST_TARGET_PMD_QAT
+ BLOCKCIPHER_TEST_TARGET_PMD_QAT |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA1 Decryption Digest "
@@ -1874,7 +1887,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC |
BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR |
BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
- BLOCKCIPHER_TEST_TARGET_PMD_MB
+ BLOCKCIPHER_TEST_TARGET_PMD_MB |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA224 Encryption Digest",
@@ -1888,7 +1902,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC |
BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR |
BLOCKCIPHER_TEST_TARGET_PMD_CCP |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA224 Decryption Digest "
@@ -1903,7 +1918,8 @@ static const struct blockcipher_test_case aes_chain_test_cases[] = {
BLOCKCIPHER_TEST_TARGET_PMD_DPAA_SEC |
BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR |
BLOCKCIPHER_TEST_TARGET_PMD_CCP |
- BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX
+ BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX |
+ BLOCKCIPHER_TEST_TARGET_PMD_NITROX
},
{
.test_descr = "AES-128-CBC HMAC-SHA384 Encryption Digest",
diff --git a/app/test/test_cryptodev_blockcipher.c b/app/test/test_cryptodev_blockcipher.c
index b8dcc39..885a20e 100644
--- a/app/test/test_cryptodev_blockcipher.c
+++ b/app/test/test_cryptodev_blockcipher.c
@@ -79,6 +79,8 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t,
RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
int null_pmd = rte_cryptodev_driver_id_get(
RTE_STR(CRYPTODEV_NAME_NULL_PMD));
+ int nitrox_pmd = rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NITROX_PMD));
int nb_segs = 1;
uint32_t nb_iterates = 0;
@@ -125,7 +127,8 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t,
driver_id == ccp_pmd ||
driver_id == virtio_pmd ||
driver_id == octeontx_pmd ||
- driver_id == null_pmd) { /* Fall through */
+ driver_id == null_pmd ||
+ driver_id == nitrox_pmd) { /* Fall through */
digest_len = tdata->digest.len;
} else if (driver_id == aesni_mb_pmd ||
driver_id == scheduler_pmd) {
@@ -717,6 +720,8 @@ test_blockcipher_all_tests(struct rte_mempool *mbuf_pool,
RTE_STR(CRYPTODEV_NAME_OCTEONTX_SYM_PMD));
int null_pmd = rte_cryptodev_driver_id_get(
RTE_STR(CRYPTODEV_NAME_NULL_PMD));
+ int nitrox_pmd = rte_cryptodev_driver_id_get(
+ RTE_STR(CRYPTODEV_NAME_NITROX_PMD));
switch (test_type) {
case BLKCIPHER_AES_CHAIN_TYPE:
@@ -789,6 +794,8 @@ test_blockcipher_all_tests(struct rte_mempool *mbuf_pool,
target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_OCTEONTX;
else if (driver_id == null_pmd)
target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NULL;
+ else if (driver_id == nitrox_pmd)
+ target_pmd_mask = BLOCKCIPHER_TEST_TARGET_PMD_NITROX;
else
TEST_ASSERT(0, "Unrecognized cryptodev type");
diff --git a/app/test/test_cryptodev_blockcipher.h b/app/test/test_cryptodev_blockcipher.h
index 3d4b975..1a65cda 100644
--- a/app/test/test_cryptodev_blockcipher.h
+++ b/app/test/test_cryptodev_blockcipher.h
@@ -32,6 +32,7 @@
#define BLOCKCIPHER_TEST_TARGET_PMD_CAAM_JR 0x0400 /* CAAM_JR flag */
#define BLOCKCIPHER_TEST_TARGET_PMD_CCP 0x0800 /* CCP flag */
#define BLOCKCIPHER_TEST_TARGET_PMD_NULL 0x1000 /* NULL flag */
+#define BLOCKCIPHER_TEST_TARGET_PMD_NITROX 0x2000 /* NITROX flag */
#define BLOCKCIPHER_TEST_OP_CIPHER (BLOCKCIPHER_TEST_OP_ENCRYPT | \
BLOCKCIPHER_TEST_OP_DECRYPT)
diff --git a/app/test/test_cryptodev_security_pdcp.c b/app/test/test_cryptodev_security_pdcp.c
new file mode 100644
index 0000000..30f3eb8
--- /dev/null
+++ b/app/test/test_cryptodev_security_pdcp.c
@@ -0,0 +1,590 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (C) 2015-2016 Freescale Semiconductor,Inc.
+ * Copyright 2018-2019 NXP
+ */
+
+#include <time.h>
+
+#include <rte_common.h>
+#include <rte_hexdump.h>
+#include <rte_mbuf.h>
+#include <rte_malloc.h>
+#include <rte_memcpy.h>
+#include <rte_pause.h>
+#include <rte_bus_vdev.h>
+#include <rte_byteorder.h>
+
+#include <rte_crypto.h>
+#include <rte_cryptodev.h>
+#include <rte_cryptodev_pmd.h>
+#include <rte_security.h>
+
+#include <rte_lcore.h>
+#include "test.h"
+#include "test_cryptodev_security_pdcp_test_func.h"
+
+static int cplane_encap(uint32_t sn_size, uint8_t dir,
+ enum enc_alg_off enc_alg_off,
+ enum auth_alg_off auth_alg_off)
+{
+ int i = 0;
+
+ switch (sn_size) {
+ case 5:
+ i = PDCP_CPLANE_OFFSET + enc_alg_off +
+ auth_alg_off + ((dir == 0) ?
+ UPLINK : DOWNLINK);
+ break;
+ case 12:
+ i = PDCP_CPLANE_LONG_SN_OFFSET + enc_alg_off +
+ auth_alg_off + ((dir == 0) ?
+ UPLINK : DOWNLINK);
+ break;
+ default:
+ printf("\nInvalid SN: %u for %s\n", sn_size, __func__);
+ }
+
+ return test_pdcp_proto_cplane_encap(i);
+}
+
+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)
+{
+ int i = 0;
+
+ switch (sn_size) {
+ case 5:
+ i = PDCP_CPLANE_OFFSET + enc_alg_off +
+ auth_alg_off + ((dir == 0) ?
+ UPLINK : DOWNLINK);
+ break;
+ case 12:
+ i = PDCP_CPLANE_LONG_SN_OFFSET + enc_alg_off +
+ auth_alg_off + ((dir == 0) ?
+ UPLINK : DOWNLINK);
+ break;
+ default:
+ printf("\nInvalid SN: %u for %s\n", sn_size, __func__);
+ }
+
+ return test_pdcp_proto_cplane_decap(i);
+}
+
+static int uplane_encap_no_integrity(uint32_t sn_size, uint8_t dir,
+ enum enc_alg_off enc_alg_off)
+{
+ int i = PDCP_UPLANE_OFFSET + ((dir == 0) ? UPLINK : DOWNLINK) +
+ enc_alg_off;
+
+ switch (sn_size) {
+ case 7:
+ i += SHORT_SEQ_NUM_OFFSET;
+ break;
+ case 15:
+ i += FIFTEEN_BIT_SEQ_NUM_OFFSET;
+ break;
+ case 12:
+ i += LONG_SEQ_NUM_OFFSET;
+ break;
+ case 18:
+ i += EIGHTEEN_BIT_SEQ_NUM_OFFSET;
+ break;
+ default:
+ printf("\nInvalid SN: %u\n", sn_size);
+ }
+
+ return test_pdcp_proto_uplane_encap(i);
+}
+
+static int
+uplane_decap_no_integrity(uint32_t sn_size, uint8_t dir,
+ enum enc_alg_off enc_alg_off)
+{
+ int i = PDCP_UPLANE_OFFSET + ((dir == 0) ? UPLINK : DOWNLINK) +
+ enc_alg_off;
+
+ switch (sn_size) {
+ case 7:
+ i += SHORT_SEQ_NUM_OFFSET;
+ break;
+ case 15:
+ i += FIFTEEN_BIT_SEQ_NUM_OFFSET;
+ break;
+ case 12:
+ i += LONG_SEQ_NUM_OFFSET;
+ break;
+ case 18:
+ i += EIGHTEEN_BIT_SEQ_NUM_OFFSET;
+ break;
+ default:
+ printf("\nInvalid SN: %u\n", sn_size);
+ }
+
+ return test_pdcp_proto_uplane_decap(i);
+}
+
+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)
+{
+ int i = 0;
+
+ switch (sn_size) {
+ case 12:
+ i = PDCP_UPLANE_12BIT_OFFSET + enc_alg_off +
+ auth_alg_off + ((dir == 0) ?
+ UPLINK : DOWNLINK);
+ break;
+ case 18:
+ i = PDCP_UPLANE_18BIT_OFFSET + enc_alg_off +
+ auth_alg_off + ((dir == 0) ?
+ UPLINK : DOWNLINK);
+ break;
+ default:
+ printf("\nInvalid SN: %u\n", sn_size);
+ }
+
+ return test_pdcp_proto_uplane_encap_with_int(i);
+}
+
+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)
+{
+ int i = 0;
+
+ switch (sn_size) {
+ case 12:
+ i = PDCP_UPLANE_12BIT_OFFSET + enc_alg_off +
+ auth_alg_off + ((dir == 0) ?
+ UPLINK : DOWNLINK);
+ break;
+ case 18:
+ i = PDCP_UPLANE_18BIT_OFFSET + enc_alg_off +
+ auth_alg_off + ((dir == 0) ?
+ UPLINK : DOWNLINK);
+ break;
+ default:
+ printf("\nInvalid SN: %u\n", sn_size);
+ }
+
+ return test_pdcp_proto_uplane_decap_with_int(i);
+}
+
+#define TEST_PDCP_COUNT(func) do { \
+ if (func == TEST_SUCCESS) { \
+ printf("\t%d)", n++); \
+ printf(#func"-PASS\n"); \
+ i++; \
+ } else { \
+ printf("\t%d)", n++); \
+ printf("+++++ FAILED:" #func"\n"); \
+ } \
+} while (0)
+
+int
+test_PDCP_PROTO_cplane_encap_all(void)
+{
+ int i = 0, n = 0;
+
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, AES_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, AES_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, UPLINK, ZUC_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(5, DOWNLINK, ZUC_ENC, ZUC_AUTH));
+
+ /* For 12-bit SN */
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, SNOW_AUTH));
+
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, AES_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, AES_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, UPLINK, ZUC_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_encap(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
+
+ if (n - i)
+ printf("## %s: %d passed out of %d\n", __func__, i, n);
+
+ return n - i;
+};
+
+int
+test_PDCP_PROTO_cplane_decap_all(void)
+{
+ int i = 0, n = 0;
+
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, AES_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, AES_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, UPLINK, ZUC_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(5, DOWNLINK, ZUC_ENC, ZUC_AUTH));
+
+ /* C-plane 12-bit */
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, SNOW_AUTH));
+
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, AES_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, AES_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, UPLINK, ZUC_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(cplane_decap(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
+
+ if (n - i)
+ printf("## %s: %d passed out of %d\n", __func__, i, n);
+
+ return n - i;
+};
+
+int
+test_PDCP_PROTO_uplane_encap_all(void)
+{
+ int i = 0, n = 0;
+
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, NULL_ENC));
+
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, SNOW_ENC));
+
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, AES_ENC));
+
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(12, UPLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(12, DOWNLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(7, UPLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(7, DOWNLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(15, UPLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(15, DOWNLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(18, UPLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_encap_no_integrity(18, DOWNLINK, ZUC_ENC));
+
+ /* For 12-bit SN with integrity */
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, AES_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, AES_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, UPLINK, ZUC_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
+
+ /* For 18-bit SN with integrity */
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, NULL_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, SNOW_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, AES_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, AES_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, UPLINK, ZUC_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_encap_with_integrity(18, DOWNLINK, ZUC_ENC, ZUC_AUTH));
+
+ if (n - i)
+ printf("## %s: %d passed out of %d\n", __func__, i, n);
+
+ return n - i;
+};
+
+int
+test_PDCP_PROTO_uplane_decap_all(void)
+{
+ int i = 0, n = 0;
+
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, NULL_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, NULL_ENC));
+
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, SNOW_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, SNOW_ENC));
+
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, AES_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, AES_ENC));
+
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(12, UPLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(12, DOWNLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(7, UPLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(7, DOWNLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(15, UPLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(15, DOWNLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(18, UPLINK, ZUC_ENC));
+ TEST_PDCP_COUNT(uplane_decap_no_integrity(18, DOWNLINK, ZUC_ENC));
+
+ /* u-plane 12-bit with integrity */
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, NULL_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, SNOW_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, AES_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, AES_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, UPLINK, ZUC_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(12, DOWNLINK, ZUC_ENC, ZUC_AUTH));
+
+ /* u-plane 18-bit with integrity */
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, NULL_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, NULL_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, SNOW_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, SNOW_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, AES_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, AES_ENC, ZUC_AUTH));
+
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, NULL_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, SNOW_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, AES_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, UPLINK, ZUC_ENC, ZUC_AUTH));
+ TEST_PDCP_COUNT(uplane_decap_with_integrity(18, DOWNLINK, ZUC_ENC, ZUC_AUTH));
+
+ if (n - i)
+ printf("## %s: %d passed out of %d\n", __func__, i, n);
+
+ return n - i;
+};
diff --git a/app/test/test_cryptodev_security_pdcp_test_func.h b/app/test/test_cryptodev_security_pdcp_test_func.h
new file mode 100644
index 0000000..f3dc93e
--- /dev/null
+++ b/app/test/test_cryptodev_security_pdcp_test_func.h
@@ -0,0 +1,48 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright 2019 NXP
+ */
+
+#ifndef SECURITY_PDCP_TEST_FUNC_H_
+#define SECURITY_PDCP_TEST_FUNC_H_
+
+#define PDCP_CPLANE_OFFSET 0
+#define PDCP_CPLANE_LONG_SN_OFFSET 32
+#define PDCP_UPLANE_OFFSET 64
+#define LONG_SEQ_NUM_OFFSET 0
+#define SHORT_SEQ_NUM_OFFSET 2
+#define FIFTEEN_BIT_SEQ_NUM_OFFSET 4
+#define EIGHTEEN_BIT_SEQ_NUM_OFFSET 6
+#define UPLINK 0
+#define DOWNLINK 1
+/* key length(in bytes) for F8 */
+#define F8_KEY_LEN 16
+
+#define PDCP_UPLANE_12BIT_OFFSET (PDCP_UPLANE_OFFSET + 32)
+#define PDCP_UPLANE_18BIT_OFFSET (PDCP_UPLANE_12BIT_OFFSET + 32)
+
+enum enc_alg_off {
+ NULL_ENC = 0,
+ SNOW_ENC = 8,
+ AES_ENC = 16,
+ ZUC_ENC = 24
+};
+enum auth_alg_off {
+ NULL_AUTH = 0,
+ SNOW_AUTH = 2,
+ AES_AUTH = 4,
+ ZUC_AUTH = 6
+};
+
+int test_pdcp_proto_cplane_encap(int i);
+int test_pdcp_proto_uplane_encap(int i);
+int test_pdcp_proto_uplane_encap_with_int(int i);
+int test_pdcp_proto_cplane_decap(int i);
+int test_pdcp_proto_uplane_decap(int i);
+int test_pdcp_proto_uplane_decap_with_int(int i);
+
+int test_PDCP_PROTO_cplane_encap_all(void);
+int test_PDCP_PROTO_cplane_decap_all(void);
+int test_PDCP_PROTO_uplane_encap_all(void);
+int test_PDCP_PROTO_uplane_decap_all(void);
+
+#endif /* SECURITY_PDCP_TEST_FUNC_H_ */
diff --git a/app/test/test_cryptodev_security_pdcp_test_vectors.h b/app/test/test_cryptodev_security_pdcp_test_vectors.h
new file mode 100644
index 0000000..7030764
--- /dev/null
+++ b/app/test/test_cryptodev_security_pdcp_test_vectors.h
@@ -0,0 +1,6323 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (C) 2015-2016 Freescale Semiconductor,Inc.
+ * Copyright 2018-2019 NXP
+ */
+
+#ifndef SECURITY_PDCP_TEST_VECTOR_H_
+#define SECURITY_PDCP_TEST_VECTOR_H_
+
+#include <rte_security.h>
+
+/*
+ * PDCP test vectors and related structures.
+ */
+enum pdcp_dir {
+ PDCP_DIR_UPLINK = 0,
+ PDCP_DIR_DOWNLINK = 1,
+ PDCP_DIR_INVALID
+};
+
+struct pdcp_test_param {
+ uint8_t type;
+ enum rte_security_pdcp_domain domain;
+ enum rte_crypto_cipher_algorithm cipher_alg;
+ uint8_t cipher_key_len;
+ enum rte_crypto_auth_algorithm auth_alg;
+ uint8_t auth_key_len;
+ const char *name;
+};
+
+static struct pdcp_test_param pdcp_test_params[] = {
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and NULL integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and NULL integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and SNOW f9 integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and SNOW f9 integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and AES CMAC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and AES CMAC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and ZUC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and ZUC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and NULL integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and NULL integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and SNOW f9 integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and SNOW f9 integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and AES CMAC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and AES CMAC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and ZUC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and ZUC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and NULL integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and NULL integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and SNOW f9 integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and SNOW f9 integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and AES CMAC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and AES CMAC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and ZUC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and ZUC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and NULL integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and NULL integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and SNOW f9 integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and SNOW f9 integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and AES CMAC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and AES CMAC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and ZUC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and ZUC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+
+ /* For 12-bit C-plane */
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and NULL integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and NULL integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and SNOW f9 integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and SNOW f9 integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and AES CMAC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and AES CMAC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and ZUC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with NULL encryption and ZUC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and NULL integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and NULL integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and SNOW f9 integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and SNOW f9 integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and AES CMAC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and AES CMAC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and ZUC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with SNOW f8 encryption and ZUC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and NULL integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and NULL integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and SNOW f9 integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and SNOW f9 integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and AES CMAC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and AES CMAC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and ZUC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with AES CTR encryption and ZUC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and NULL integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and NULL integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and SNOW f9 integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and SNOW f9 integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and AES CMAC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and AES CMAC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and ZUC integrity Uplink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_CONTROL,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP Control Plane with ZUC encryption and ZUC integrity Downlink",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption Uplink with long sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption Downlink with long sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption Uplink with short sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption Downlink with short sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption Uplink with 15 bit sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption Downlink with 15 bit sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption Uplink with long sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption Downlink with long sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption Uplink with short sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption Downlink with short sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption Uplink with 15 bit sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption Downlink with 15 bit sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption Uplink with long sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption Downlink with long sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption Uplink with short sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption Downlink with short sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption Uplink with 15 bit sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption Downlink with 15 bit sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption Uplink with long sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption Downlink with long sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption Uplink with short sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption Downlink with short sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption Uplink with 15 bit sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption Downlink with 15 bit sequence number",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = 0,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+
+ /********* 12-bit uplane with integrity **************************/
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and NULL integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and NULL integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and SNOW f9 integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and SNOW f9 integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and AES CMAC integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and AES CMAC integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and ZUC integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and ZUC integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and NULL integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and NULL integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and SNOW f9 integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and SNOW f9 integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and AES CMAC integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and AES CMAC integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and ZUC integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and ZUC integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and NULL integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and NULL integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and SNOW f9 integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and SNOW f9 integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and AES CMAC integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and AES CMAC integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and ZUC integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and ZUC integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and NULL integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and NULL integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and SNOW f9 integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and SNOW f9 integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and AES CMAC integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and AES CMAC integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and ZUC integrity Uplink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and ZUC integrity Downlink with 12 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ /********* 18-bit uplane with integrity **************************/
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and NULL integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and NULL integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and SNOW f9 integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and SNOW f9 integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and AES CMAC integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and AES CMAC integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and ZUC integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with NULL encryption and ZUC integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_NULL,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 0,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and NULL integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and NULL integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and SNOW f9 integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and SNOW f9 integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and AES CMAC integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and AES CMAC integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and ZUC integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with SNOW f8 encryption and ZUC integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and NULL integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and NULL integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and SNOW f9 integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and SNOW f9 integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and AES CMAC integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and AES CMAC integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and ZUC integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with AES CTR encryption and ZUC integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_AES_CTR,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and NULL integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and NULL integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_NULL,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 0,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and SNOW f9 integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and SNOW f9 integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_SNOW3G_UIA2,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and AES CMAC integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and AES CMAC integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_AES_CMAC,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and ZUC integrity Uplink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+ {
+ .name =
+ "PDCP User Plane with ZUC encryption and ZUC integrity Downlink with 18 bit SN",
+ .cipher_alg = RTE_CRYPTO_CIPHER_ZUC_EEA3,
+ .auth_alg = RTE_CRYPTO_AUTH_ZUC_EIA3,
+ .domain = RTE_SECURITY_PDCP_MODE_DATA,
+ .cipher_key_len = 16,
+ .auth_key_len = 16,
+ },
+};
+
+static uint32_t pdcp_test_hfn[] = {
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ 0x000fa557,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ 0x000fa557,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ 0x000fa557,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ 0x000fa557,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ 0x000fa557,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ 0x000fa557,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ 0x000fa557,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ 0x000fa557,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ 0x000fa557,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ 0x000fa557,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ 0x000fa557,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ 0x000fa557,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ 0x000fa557,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ 0x000fa557,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ 0x000fa557,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ 0x000fa557,
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ 0x000fa557,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ 0x000fa557,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ 0x000fa557,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ 0x000fa557,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ 0x000fa557,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ 0x000fa557,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ 0x000fa557,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ 0x000fa557,
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ 0x000fa557,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ 0x000fa557,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ 0x000fa557,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ 0x000fa557,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ 0x000fa557,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ 0x000fa557,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ 0x000fa557,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ 0x000fa557,
+
+ /* For 12-bit C-plane ***********************/
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ 0x01,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ 0x01,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ 0x01,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ 0x01,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ 0x01,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ 0x01,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ 0x01,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ 0x01,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ 0x01,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ 0x01,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ 0x01,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ 0x01,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ 0x01,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ 0x01,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ 0x01,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ 0x01,
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ 0x01,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ 0x01,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ 0x01,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ 0x01,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ 0x01,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ 0x01,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ 0x01,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ 0x01,
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ 0x01,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ 0x01,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ 0x01,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ 0x01,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ 0x01,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ 0x01,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ 0x01,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ 0x01,
+
+ /* 12-bit C-plane ends ***********************/
+
+ /* User Plane w/NULL enc. UL LONG SN */
+ 0x000fa557,
+ /* User Plane w/NULL enc. DL LONG SN */
+ 0x000fa557,
+ /* User Plane w/NULL enc. UL SHORT SN */
+ 0x000fa557,
+ /* User Plane w/NULL enc. DL SHORT SN */
+ 0x000fa557,
+ /* User Plane w/NULL enc. UL 15 BIT SN */
+ 0x000fa557,
+ /* User Plane w/NULL enc. DL 15 BIT SN */
+ 0x000fa557,
+ /* User Plane w/NULL enc. UL 18-bit SN */
+ 0x01,
+ /* User Plane w/NULL enc. DL 18-bit SN */
+ 0x01,
+ /* User Plane w/SNOW f8 enc. UL LONG SN */
+ 0x000fa557,
+ /* User Plane w/SNOW f8 enc. DL LONG SN */
+ 0x000fa557,
+ /* User Plane w/SNOW f8 enc. UL SHORT SN */
+ 0x000fa557,
+ /* User Plane w/SNOW f8 enc. DL SHORT SN */
+ 0x000fa557,
+ /* User Plane w/SNOW f8 enc. UL 15 BIT SN */
+ 0x000fa557,
+ /* User Plane w/SNOW f8 enc. DL 15 BIT SN */
+ 0x000fa557,
+ /* User Plane w/SNOW f8 enc. UL 18-bit SN */
+ 0x01,
+ /* User Plane w/SNOW f8 enc. DL 18-bit SN */
+ 0x01,
+ /* User Plane w/AES CTR enc. UL LONG SN */
+ 0x000fa557,
+ /* User Plane w/AES CTR enc. DL LONG SN */
+ 0x000fa557,
+ /* User Plane w/AES CTR enc. UL SHORT SN */
+ 0x000fa557,
+ /* User Plane w/AES CTR enc. DL SHORT SN */
+ 0x000fa557,
+ /* User Plane w/AES CTR enc. UL 15 BIT SN */
+ 0x000fa557,
+ /* User Plane w/AES CTR enc. DL 15 BIT SN */
+ 0x000fa557,
+ /* User Plane w/AES CTR enc. UL 18-bit SN */
+ 0x01,
+ /* User Plane w/AES CTR enc. DL 18-bit SN */
+ 0x01,
+ /* User Plane w/ZUC enc. UL LONG SN */
+ 0x000fa557,
+ /* User Plane w/ZUC enc. DL LONG SN */
+ 0x000fa557,
+ /* User Plane w/ZUC enc. UL SHORT SN */
+ 0x000fa557,
+ /* User Plane w/ZUC enc. DL SHORT SN */
+ 0x000fa557,
+ /* User Plane w/ZUC enc. UL 15 BIT SN */
+ 0x000fa557,
+ /* User Plane w/ZUC enc. DL 15 BIT SN */
+ 0x000fa557,
+ /* User Plane w/ZUC enc. UL 18-bit SN */
+ 0x01,
+ /* User Plane w/ZUC enc. DL 18-bit SN */
+ 0x01,
+
+ /********* 12-bit uplane with integrity **************************/
+ /* User Plane w/NULL enc. + NULL int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + NULL int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + ZUC int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + ZUC int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + NULL int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + NULL int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + NULL int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 12-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 12-bit SN*/
+ 0x01,
+
+ /********* 18-bit uplane with integrity **************************/
+ /* User Plane w/NULL enc. + NULL int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + NULL int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + ZUC int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/NULL enc. + ZUC int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + NULL int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + NULL int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + NULL int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 18-bit SN*/
+ 0x01,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 18-bit SN*/
+ 0x01,
+};
+
+static uint32_t pdcp_test_hfn_threshold[] = {
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ 0x000fa558,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ 0x000fa558,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ 0x000fa558,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ 0x000fa558,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ 0x000fa558,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ 0x000fa558,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ 0x000fa558,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ 0x000fa558,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ 0x000fa558,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ 0x000fa558,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ 0x000fa558,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ 0x000fa558,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ 0x000fa558,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ 0x000fa558,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ 0x000fa558,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ 0x000fa558,
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ 0x000fa558,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ 0x000fa558,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ 0x000fa558,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ 0x000fa558,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ 0x000fa558,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ 0x000fa558,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ 0x000fa558,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ 0x000fa558,
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ 0x000fa558,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ 0x000fa558,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ 0x000fa558,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ 0x000fa558,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ 0x000fa558,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ 0x000fa558,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ 0x000fa558,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ 0x000fa558,
+
+ /*********** For 12-bit C-plane ***********************/
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ 0x70C0A,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ 0x70C0A,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ 0x70C0A,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ 0x70C0A,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ 0x70C0A,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ 0x70C0A,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ 0x70C0A,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ 0x70C0A,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ 0x70C0A,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ 0x70C0A,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ 0x70C0A,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ 0x70C0A,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ 0x70C0A,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ 0x70C0A,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ 0x70C0A,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ 0x70C0A,
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ 0x70C0A,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ 0x70C0A,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ 0x70C0A,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ 0x70C0A,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ 0x70C0A,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ 0x70C0A,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ 0x70C0A,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ 0x70C0A,
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ 0x70C0A,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ 0x70C0A,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ 0x70C0A,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ 0x70C0A,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ 0x70C0A,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ 0x70C0A,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ 0x70C0A,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ 0x70C0A,
+
+ /* User Plane w/NULL enc. UL LONG SN */
+ 0x000fa558,
+ /* User Plane w/NULL enc. DL LONG SN */
+ 0x000fa558,
+ /* User Plane w/NULL enc. UL SHORT SN */
+ 0x000fa558,
+ /* User Plane w/NULL enc. DL SHORT SN */
+ 0x000fa558,
+ /* User Plane w/NULL enc. UL 15 BIT SN */
+ 0x000fa558,
+ /* User Plane w/NULL enc. DL 15 BIT SN */
+ 0x000fa558,
+ /* User Plane w/NULL enc. UL 18-bit SN */
+ 0x00002195,
+ /* User Plane w/NULL enc. DL 18-bit SN */
+ 0x00002195,
+ /* User Plane w/SNOW f8 enc. UL LONG SN */
+ 0x000fa558,
+ /* User Plane w/SNOW f8 enc. DL LONG SN */
+ 0x000fa558,
+ /* User Plane w/SNOW f8 enc. UL SHORT SN */
+ 0x000fa558,
+ /* User Plane w/SNOW f8 enc. DL SHORT SN */
+ 0x000fa558,
+ /* User Plane w/SNOW f8 enc. UL 15 BIT SN */
+ 0x000fa558,
+ /* User Plane w/SNOW f8 enc. DL 15 BIT SN */
+ 0x000fa558,
+ /* User Plane w/SNOW f8 enc. UL 18-bit SN */
+ 0x00000791,
+ /* User Plane w/SNOW f8 enc. DL 18-bit SN */
+ 0x00002195,
+ /* User Plane w/AES CTR enc. UL LONG SN */
+ 0x000fa558,
+ /* User Plane w/AES CTR enc. DL LONG SN */
+ 0x000fa558,
+ /* User Plane w/AES CTR enc. UL SHORT SN */
+ 0x000fa558,
+ /* User Plane w/AES CTR enc. DL SHORT SN */
+ 0x000fa558,
+ /* User Plane w/AES CTR enc. UL 15 BIT SN */
+ 0x000fa558,
+ /* User Plane w/AES CTR enc. DL 15 BIT SN */
+ 0x000fa558,
+ /* User Plane w/AES CTR enc. UL 18-bit SN */
+ 0x00000791,
+ /* User Plane w/AES CTR enc. DL 18-bit SN */
+ 0x00002195,
+ /* User Plane w/ZUC enc. UL LONG SN */
+ 0x000fa558,
+ /* User Plane w/ZUC enc. DL LONG SN */
+ 0x000fa558,
+ /* User Plane w/ZUC enc. UL SHORT SN */
+ 0x000fa558,
+ /* User Plane w/ZUC enc. DL SHORT SN */
+ 0x000fa558,
+ /* User Plane w/ZUC enc. UL 15 BIT SN */
+ 0x000fa558,
+ /* User Plane w/ZUC enc. DL 15 BIT SN */
+ 0x000fa558,
+ /* User Plane w/ZUC enc. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/ZUC enc. DL for 18-bit SN*/
+ 0x00002195,
+
+ /*** u-plane with integrity for 12-bit SN ******/
+
+ /* User Plane w/NULL enc. + NULL int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/NULL enc. + NULL int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/NULL enc. + ZUC int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/NULL enc. + ZUC int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/AES CTR enc. + NULL int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/ZUC enc. + NULL int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/ZUC enc. + NULL int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 12-bit SN*/
+ 0x70C0A,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 12-bit SN*/
+ 0x70C0A,
+
+ /*** u-plane with integrity for 18-bit SN ******/
+ /* User Plane w/NULL enc. + NULL int. UL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/NULL enc. + NULL int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/NULL enc. + ZUC int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/NULL enc. + ZUC int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/AES CTR enc. + NULL int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/ZUC enc. + NULL int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/ZUC enc. + NULL int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x00002195,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 18-bit SN*/
+ 0x00000791,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 18-bit SN*/
+ 0x00002195,
+};
+
+static uint8_t pdcp_test_bearer[] = {
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ 0x03,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ 0x03,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ 0x03,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ 0x03,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ 0x03,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ 0x03,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ 0x03,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ 0x03,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ 0x03,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ 0x03,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ 0x03,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ 0x03,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ 0x03,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ 0x03,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ 0x03,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ 0x03,
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ 0x03,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ 0x03,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ 0x03,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ 0x03,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ 0x03,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ 0x03,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ 0x03,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ 0x03,
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ 0x03,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ 0x03,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ 0x03,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ 0x03,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ 0x03,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ 0x03,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ 0x03,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ 0x03,
+
+ /************** For 12-bit C-plane ********************/
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ 0x16,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ 0x16,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ 0x16,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ 0x16,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ 0x16,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ 0x16,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ 0x16,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ 0x16,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ 0x16,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ 0x16,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ 0x16,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ 0x16,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ 0x16,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ 0x16,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ 0x16,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ 0x16,
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ 0x16,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ 0x16,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ 0x16,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ 0x16,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ 0x16,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ 0x16,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ 0x16,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ 0x16,
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ 0x16,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ 0x16,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ 0x16,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ 0x16,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ 0x16,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ 0x16,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ 0x16,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ 0x16,
+
+ /* User Plane w/NULL enc. UL LONG SN */
+ 0x03,
+ /* User Plane w/NULL enc. DL LONG SN */
+ 0x03,
+ /* User Plane w/NULL enc. UL SHORT SN */
+ 0x03,
+ /* User Plane w/NULL enc. DL SHORT SN */
+ 0x03,
+ /* User Plane w/NULL enc. UL 15 BIT SN */
+ 0x03,
+ /* User Plane w/NULL enc. DL 15 BIT SN */
+ 0x03,
+ /* User Plane w/NULL enc. UL 18-bit SN */
+ 0x16,
+ /* User Plane w/NULL enc. DL 18-bit SN */
+ 0x16,
+ /* User Plane w/SNOW f8 enc. UL LONG SN */
+ 0x03,
+ /* User Plane w/SNOW f8 enc. DL LONG SN */
+ 0x03,
+ /* User Plane w/SNOW f8 enc. UL SHORT SN */
+ 0x03,
+ /* User Plane w/SNOW f8 enc. DL SHORT SN */
+ 0x03,
+ /* User Plane w/SNOW f8 enc. UL 15 BIT SN */
+ 0x03,
+ /* User Plane w/SNOW f8 enc. DL 15 BIT SN */
+ 0x03,
+ /* User Plane w/SNOW f8 enc. UL 18-bit SN */
+ 0x0B,
+ /* User Plane w/SNOW f8 enc. DL 18-bit SN */
+ 0x16,
+ /* User Plane w/AES CTR enc. UL LONG SN */
+ 0x03,
+ /* User Plane w/AES CTR enc. DL LONG SN */
+ 0x03,
+ /* User Plane w/AES CTR enc. UL SHORT SN */
+ 0x03,
+ /* User Plane w/AES CTR enc. DL SHORT SN */
+ 0x03,
+ /* User Plane w/AES CTR enc. UL 15 BIT SN */
+ 0x03,
+ /* User Plane w/AES CTR enc. DL 15 BIT SN */
+ 0x03,
+ /* User Plane w/AES CTR enc. UL 18-bit SN */
+ 0x0B,
+ /* User Plane w/AES CTR enc. DL 18-bit SN */
+ 0x16,
+ /* User Plane w/ZUC enc. UL LONG SN */
+ 0x03,
+ /* User Plane w/ZUC enc. DL LONG SN */
+ 0x03,
+ /* User Plane w/ZUC enc. UL SHORT SN */
+ 0x03,
+ /* User Plane w/ZUC enc. DL SHORT SN */
+ 0x03,
+ /* User Plane w/ZUC enc. UL 15 BIT SN */
+ 0x03,
+ /* User Plane w/ZUC enc. DL 15 BIT SN */
+ 0x03,
+ /* User Plane w/ZUC enc. UL 18-bit SN */
+ 0x0B,
+ /* User Plane w/ZUC enc. DL 18-bit SN */
+ 0x16,
+
+ /*** u-plane with integrity for 12-bit SN ******/
+
+ /* User Plane w/NULL enc. + NULL int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/NULL enc. + NULL int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/NULL enc. + ZUC int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/NULL enc. + ZUC int. DL for 12-bit SN*/
+ 0x16,
+
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + NULL int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 12-bit SN*/
+ 0x16,
+
+ /* User Plane w/ZUC enc. + NULL int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/ZUC enc. + NULL int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 12-bit SN*/
+ 0x16,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 12-bit SN*/
+ 0x16,
+
+ /*** u-plane with integrity for 18-bit SN ******/
+ /* User Plane w/NULL enc. + NULL int. UL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/NULL enc. + NULL int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/NULL enc. + ZUC int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/NULL enc. + ZUC int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + NULL int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/ZUC enc. + NULL int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/ZUC enc. + NULL int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 18-bit SN*/
+ 0x16,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 18-bit SN*/
+ 0x0B,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 18-bit SN*/
+ 0x16,
+
+};
+
+static uint8_t pdcp_test_packet_direction[] = {
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ PDCP_DIR_DOWNLINK,
+
+ /***************** For 12-bit C-plane **********************/
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ PDCP_DIR_DOWNLINK,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ PDCP_DIR_UPLINK,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ PDCP_DIR_DOWNLINK,
+
+ /* User Plane w/NULL enc. UL LONG SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. DL LONG SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/NULL enc. UL SHORT SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. DL SHORT SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/NULL enc. UL 15 BIT SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. DL 15 BIT SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/NULL enc. UL 18-bit SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. DL 18-bit SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. UL LONG SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. DL LONG SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. UL SHORT SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. DL SHORT SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. UL 15 BIT SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. DL 15 BIT SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. UL 18-bit SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. DL 18-bit SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. UL LONG SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. DL LONG SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. UL SHORT SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. DL SHORT SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. UL 15 BIT SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. DL 15 BIT SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. UL 18-bit SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. DL 18-bit SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. UL LONG SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. DL LONG SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. UL SHORT SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. DL SHORT SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. UL 15 BIT SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. DL 15 BIT SN */
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. UL for 18-bit SN */
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. DL for 18-bit SN */
+ PDCP_DIR_DOWNLINK,
+
+ /*** u-plane with integrity for 12-bit SN ******/
+
+ /* User Plane w/NULL enc. + NULL int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. + NULL int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/NULL enc. + ZUC int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. + ZUC int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. + NULL int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. + NULL int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. + NULL int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 12-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 12-bit SN*/
+ PDCP_DIR_DOWNLINK,
+
+ /*** u-plane with integrity for 18-bit SN ******/
+ /* User Plane w/NULL enc. + NULL int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. + NULL int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/NULL enc. + ZUC int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/NULL enc. + ZUC int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. + NULL int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. + NULL int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. + NULL int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 18-bit SN*/
+ PDCP_DIR_UPLINK,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 18-bit SN*/
+ PDCP_DIR_DOWNLINK,
+
+};
+
+static uint8_t pdcp_test_data_sn_size[] = {
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ 5,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ 5,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ 5,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ 5,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ 5,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ 5,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ 5,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ 5,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ 5,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ 5,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ 5,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ 5,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ 5,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ 5,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ 5,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ 5,
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ 5,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ 5,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ 5,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ 5,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ 5,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ 5,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ 5,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ 5,
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ 5,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ 5,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ 5,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ 5,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ 5,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ 5,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ 5,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ 5,
+
+ /*************** 12 bit SN for C-plane **************************/
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ 12,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ 12,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ 12,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ 12,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ 12,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ 12,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ 12,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ 12,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ 12,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ 12,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ 12,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ 12,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ 12,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ 12,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ 12,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ 12,
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ 12,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ 12,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ 12,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ 12,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ 12,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ 12,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ 12,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ 12,
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ 12,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ 12,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ 12,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ 12,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ 12,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ 12,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ 12,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ 12,
+ /*************** 12 bit SN for C-plane end **************************/
+
+ /* User Plane w/NULL enc. UL LONG SN */
+ 12,
+ /* User Plane w/NULL enc. DL LONG SN */
+ 12,
+ /* User Plane w/NULL enc. UL SHORT SN */
+ 7,
+ /* User Plane w/NULL enc. DL SHORT SN */
+ 7,
+ /* User Plane w/NULL enc. UL 15 BIT SN */
+ 15,
+ /* User Plane w/NULL enc. DL 15 BIT SN */
+ 15,
+ /* User Plane w/NULL enc. UL 18 BIT SN */
+ 18,
+ /* User Plane w/NULL enc. DL 18 BIT SN */
+ 18,
+ /* User Plane w/SNOW f8 enc. UL LONG SN */
+ 12,
+ /* User Plane w/SNOW f8 enc. DL LONG SN */
+ 12,
+ /* User Plane w/SNOW f8 enc. UL SHORT SN */
+ 7,
+ /* User Plane w/SNOW f8 enc. DL SHORT SN */
+ 7,
+ /* User Plane w/SNOW f8 enc. UL 15 BIT SN */
+ 15,
+ /* User Plane w/SNOW f8 enc. DL 15 BIT SN */
+ 15,
+ /* User Plane w/SNOW f8 enc. UL 18 BIT SN */
+ 18,
+ /* User Plane w/SNOW f8 enc. DL 18 BIT SN */
+ 18,
+ /* User Plane w/AES CTR enc. UL LONG SN */
+ 12,
+ /* User Plane w/AES CTR enc. DL LONG SN */
+ 12,
+ /* User Plane w/AES CTR enc. UL SHORT SN */
+ 7,
+ /* User Plane w/AES CTR enc. DL SHORT SN */
+ 7,
+ /* User Plane w/AES CTR enc. UL 15 BIT SN */
+ 15,
+ /* User Plane w/AES CTR enc. DL 15 BIT SN */
+ 15,
+ /* User Plane w/AES CTR enc. UL 18 BIT SN */
+ 18,
+ /* User Plane w/AES CTR enc. DL 18 BIT SN */
+ 18,
+ /* User Plane w/ZUC enc. UL LONG SN */
+ 12,
+ /* User Plane w/ZUC enc. DL LONG SN */
+ 12,
+ /* User Plane w/ZUC enc. UL SHORT SN */
+ 7,
+ /* User Plane w/ZUC enc. DL SHORT SN */
+ 7,
+ /* User Plane w/ZUC enc. UL 15 BIT SN */
+ 15,
+ /* User Plane w/ZUC enc. DL 15 BIT SN */
+ 15,
+ /* User Plane w/ZUC enc. UL 18 BIT SN */
+ 18,
+ /* User Plane w/ZUC enc. DL 18 BIT SN */
+ 18,
+
+ /*** u-plane with integrity for 12-bit SN ******/
+
+ /* User Plane w/NULL enc. + NULL int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/NULL enc. + NULL int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/NULL enc. + ZUC int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/NULL enc. + ZUC int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/AES CTR enc. + NULL int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/ZUC enc. + NULL int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/ZUC enc. + NULL int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 12-bit SN*/
+ 12,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 12-bit SN*/
+ 12,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 12-bit SN*/
+ 12,
+
+ /*** u-plane with integrity for 18-bit SN ******/
+ /* User Plane w/NULL enc. + NULL int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/NULL enc. + NULL int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/NULL enc. + ZUC int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/NULL enc. + ZUC int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/AES CTR enc. + NULL int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/ZUC enc. + NULL int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/ZUC enc. + NULL int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 18-bit SN*/
+ 18,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 18-bit SN*/
+ 18,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 18-bit SN*/
+ 18,
+};
+
+static uint8_t *pdcp_test_crypto_key[] = {
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+
+ /*********** C-plane 12-bit **************/
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ NULL,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ NULL,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ NULL,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ NULL,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ NULL,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ NULL,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ NULL,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ NULL,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+
+ /* User Plane w/NULL enc. UL LONG SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/NULL enc. DL LONG SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/NULL enc. UL SHORT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/NULL enc. DL SHORT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/NULL enc. UL 15 BIT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/NULL enc. DL 15 BIT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/NULL enc. UL for 18-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. DL for 18-bit SN*/
+ NULL,
+ /* User Plane w/SNOW f8 enc. UL LONG SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/SNOW f8 enc. DL LONG SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/SNOW f8 enc. UL SHORT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/SNOW f8 enc. DL SHORT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/SNOW f8 enc. UL 15 BIT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/SNOW f8 enc. DL 15 BIT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/SNOW enc. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/SNOW enc. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/AES CTR enc. UL LONG SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/AES CTR enc. DL LONG SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/AES CTR enc. UL SHORT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/AES CTR enc. DL SHORT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/AES CTR enc. UL 15 BIT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/AES CTR enc. DL 15 BIT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/AES enc. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/AES enc. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. UL LONG SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/ZUC enc. DL LONG SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/ZUC enc. UL SHORT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/ZUC enc. DL SHORT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/ZUC enc. UL 15 BIT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/ZUC enc. DL 15 BIT SN */
+ (uint8_t[]){0x5a, 0xcb, 0x1d, 0x64, 0x4c, 0x0d, 0x51, 0x20, 0x4e, 0xa5,
+ 0xf1, 0x45, 0x10, 0x10, 0xd8, 0x52},
+ /* User Plane w/ZUC enc. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/ZUC enc. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+
+ /******* u-plane for 12-bit SN ***********/
+ /* User Plane w/NULL enc. + NULL int. UL for 12-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + NULL int. DL for 12-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 12-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 12-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 12-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 12-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + ZUC int. UL for 12-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + ZUC int. DL for 12-bit SN*/
+ NULL,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+
+ /* User Plane w/AES CTR enc. + NULL int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/AES CTR enc. + NULL int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+
+ /* User Plane w/ZUC enc. + NULL int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. + NULL int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. + ZUC int. UL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. + ZUC int. DL for 12-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+
+ /******* u-plane for 18-bit SN with integrity ***********/
+ /* User Plane w/NULL enc. + NULL int. UL for 18-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + NULL int. DL for 18-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 18-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 18-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 18-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 18-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + ZUC int. UL for 18-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + ZUC int. DL for 18-bit SN*/
+ NULL,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/AES CTR enc. + NULL int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/AES CTR enc. + NULL int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. + NULL int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/ZUC enc. + NULL int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+ /* User Plane w/ZUC enc. + ZUC int. UL for 18-bit SN*/
+ (uint8_t[]){0x60, 0x4C, 0x8A, 0x22, 0x89, 0x56, 0x13, 0x51, 0x7D, 0x61,
+ 0xE5, 0xE0, 0x7B, 0x2B, 0xD0, 0x9E},
+ /* User Plane w/ZUC enc. + ZUC int. DL for 18-bit SN*/
+ (uint8_t[]){0x40, 0x19, 0xE2, 0x99, 0x16, 0xC3, 0x7E, 0x9B, 0xA6, 0x8F,
+ 0x57, 0xBE, 0x97, 0xFD, 0x02, 0xCB},
+};
+
+static uint8_t *pdcp_test_auth_key[] = {
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ (uint8_t[]){0xc7, 0x36, 0xc6, 0xaa, 0xb2, 0x2b, 0xff, 0xf9, 0x1e, 0x26,
+ 0x98, 0xd2, 0xe2, 0x2a, 0xd5, 0x7e},
+
+ /********* 12-bit C-plane **********************/
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ NULL,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ NULL,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ NULL,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ NULL,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ NULL,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ NULL,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ NULL,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ NULL,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+
+ /* User Plane w/NULL enc. UL LONG SN */
+ NULL,
+ /* User Plane w/NULL enc. DL LONG SN */
+ NULL,
+ /* User Plane w/NULL enc. UL SHORT SN */
+ NULL,
+ /* User Plane w/NULL enc. DL SHORT SN */
+ NULL,
+ /* User Plane w/NULL enc. UL 15 BIT SN */
+ NULL,
+ /* User Plane w/NULL enc. DL 15 BIT SN */
+ NULL,
+ /* User Plane w/NULL enc. UL 18 BIT SN */
+ NULL,
+ /* User Plane w/NULL enc. DL 18 BIT SN */
+ NULL,
+ /* User Plane w/SNOW f8 enc. UL LONG SN */
+ NULL,
+ /* User Plane w/SNOW f8 enc. DL LONG SN */
+ NULL,
+ /* User Plane w/SNOW f8 enc. UL SHORT SN */
+ NULL,
+ /* User Plane w/SNOW f8 enc. DL SHORT SN */
+ NULL,
+ /* User Plane w/SNOW f8 enc. UL 15 BIT SN */
+ NULL,
+ /* User Plane w/SNOW f8 enc. DL 15 BIT SN */
+ NULL,
+ /* User Plane w/SNOW f8 enc. UL 18 BIT SN */
+ NULL,
+ /* User Plane w/SNOW f8 enc. DL 18 BIT SN */
+ NULL,
+ /* User Plane w/AES CTR enc. UL LONG SN */
+ NULL,
+ /* User Plane w/AES CTR enc. DL LONG SN */
+ NULL,
+ /* User Plane w/AES CTR enc. UL SHORT SN */
+ NULL,
+ /* User Plane w/AES CTR enc. DL SHORT SN */
+ NULL,
+ /* User Plane w/AES CTR enc. UL 15 BIT SN */
+ NULL,
+ /* User Plane w/AES CTR enc. DL 15 BIT SN */
+ NULL,
+ /* User Plane w/AES CTR enc. UL 18 BIT SN */
+ NULL,
+ /* User Plane w/AES CTR enc. DL 18 BIT SN */
+ NULL,
+ /* User Plane w/ZUC enc. UL LONG SN */
+ NULL,
+ /* User Plane w/ZUC enc. DL LONG SN */
+ NULL,
+ /* User Plane w/ZUC enc. UL SHORT SN */
+ NULL,
+ /* User Plane w/ZUC enc. DL SHORT SN */
+ NULL,
+ /* User Plane w/ZUC enc. UL 15 BIT SN */
+ NULL,
+ /* User Plane w/ZUC enc. DL 15 BIT SN */
+ NULL,
+ /* User Plane w/ZUC enc. UL 18 BIT SN */
+ NULL,
+ /* User Plane w/ZUC enc. DL 18 BIT SN */
+ NULL,
+
+ /***** u-plane with integrity for 12-bit SN ******/
+ /* User Plane w/NULL enc. + NULL int. UL for 12-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + NULL int. DL for 12-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/NULL enc. + ZUC int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/NULL enc. + ZUC int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 12-bit SN*/
+ NULL,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 12-bit SN*/
+ NULL,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+
+ /* User Plane w/AES CTR enc. + NULL int. UL for 12-bit SN*/
+ NULL,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 12-bit SN*/
+ NULL,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+
+ /* User Plane w/ZUC enc. + NULL int. UL for 12-bit SN*/
+ NULL,
+ /* User Plane w/ZUC enc. + NULL int. DL for 12-bit SN*/
+ NULL,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/ZUC enc. + ZUC int. UL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/ZUC enc. + ZUC int. DL for 12-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+
+ /***** u-plane with integrity for 18-bit SN ******/
+ /* User Plane w/NULL enc. + NULL int. UL for 18-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + NULL int. DL for 18-bit SN*/
+ NULL,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/NULL enc. + ZUC int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/NULL enc. + ZUC int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 18-bit SN*/
+ NULL,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 18-bit SN*/
+ NULL,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/AES CTR enc. + NULL int. UL for 18-bit SN*/
+ NULL,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 18-bit SN*/
+ NULL,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/ZUC enc. + NULL int. UL for 18-bit SN*/
+ NULL,
+ /* User Plane w/ZUC enc. + NULL int. DL for 18-bit SN*/
+ NULL,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+ /* User Plane w/ZUC enc. + ZUC int. UL for 18-bit SN*/
+ (uint8_t[]){0x1A, 0xEF, 0xBB, 0xFF, 0x00, 0xF5, 0x4B, 0x32, 0x87, 0xF9,
+ 0xDB, 0xE0, 0x31, 0x5F, 0x3A, 0x15},
+ /* User Plane w/ZUC enc. + ZUC int. DL for 18-bit SN*/
+ (uint8_t[]){0x4D, 0x4B, 0x2B, 0x1E, 0x39, 0x60, 0x0A, 0x98, 0xC1, 0x3C,
+ 0x98, 0x82, 0xDC, 0xB6, 0xC2, 0x36},
+};
+
+static uint8_t *pdcp_test_data_in[] = {
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+
+ /*************** 12-bit C-plane ****************/
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+
+ /* User Plane w/NULL enc. UL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. DL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. UL SHORT SN */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. DL SHORT SN */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. UL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. DL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. UL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69, 0x00, 0x00, 0x00, 0x00},
+ /* User Plane w/NULL enc. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69, 0x00, 0x00, 0x00, 0x00},
+ /* User Plane w/SNOW f8 enc. UL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/SNOW f8 enc. DL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/SNOW f8 enc. UL SHORT SN */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/SNOW f8 enc. DL SHORT SN */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/SNOW f8 enc. UL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/SNOW f8 enc. DL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/SNOW enc. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91, 0x00, 0x00, 0x00, 0x00},
+ /* User Plane w/SNOW enc. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69, 0x00, 0x00, 0x00, 0x00},
+ /* User Plane w/AES CTR enc. UL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/AES CTR enc. DL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/AES CTR enc. UL SHORT SN */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/AES CTR enc. DL SHORT SN */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/AES CTR enc. UL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/AES CTR enc. DL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/AES enc. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91, 0x00, 0x00, 0x00, 0x00},
+ /* User Plane w/AES enc. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69, 0x00, 0x00, 0x00, 0x00},
+ /* User Plane w/ZUC enc. UL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/ZUC enc. DL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/ZUC enc. UL SHORT SN */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/ZUC enc. DL SHORT SN */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/ZUC enc. UL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/ZUC enc. DL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/ZUC enc. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91, 0x00, 0x00, 0x00, 0x00},
+ /* User Plane w/ZUC enc. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69, 0x00, 0x00, 0x00, 0x00},
+
+ /*************** u-plane with integrity for 12-bit SN *****/
+ /* User Plane w/NULL enc. + NULL int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/NULL enc. + NULL int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/NULL enc. + ZUC int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/NULL enc. + ZUC int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+
+ /* User Plane w/AES CTR enc. + NULL int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/AES CTR enc. + NULL int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+
+ /* User Plane w/ZUC enc. + NULL int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/ZUC enc. + NULL int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/ZUC enc. + ZUC int. UL for 12-bit SN*/
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/ZUC enc. + ZUC int. DL for 12-bit SN*/
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53,
+ 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB,
+ 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91,
+ 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0,
+ 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70,
+ 0x1B, 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+
+ /*************** u-plane with integrity for 18-bit SN *****/
+ /* User Plane w/NULL enc. + NULL int. UL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/NULL enc. + NULL int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/NULL enc. + ZUC int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/NULL enc. + ZUC int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/AES CTR enc. + NULL int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/AES CTR enc. + NULL int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/ZUC enc. + NULL int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/ZUC enc. + NULL int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+ /* User Plane w/ZUC enc. + ZUC int. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91},
+ /* User Plane w/ZUC enc. + ZUC int. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69},
+};
+
+static uint32_t pdcp_test_data_in_len[] = {
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ 16,
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ 16,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ 16,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ 16,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ 16,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ 16,
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ 16,
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ 16,
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ 16,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ 16,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ 16,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ 16,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ 16,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ 16,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ 16,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ 16,
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ 16,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ 16,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ 16,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ 16,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ 16,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ 16,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ 16,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ 16,
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ 16,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ 16,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ 16,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ 16,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ 16,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ 16,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ 16,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ 16,
+
+ /****************** C-plane 12-bit SN ***********/
+ /* Control Plane w/NULL enc. + NULL int. UL LONG SN */
+ 66,
+ /* Control Plane w/NULL enc. + NULL int. DL LONG SN */
+ 66,
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL LONG SN */
+ 66,
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL LONG SN */
+ 66,
+ /* Control Plane w/NULL enc. + AES CMAC int. UL LONG SN */
+ 66,
+ /* Control Plane w/NULL enc. + AES CMAC int. DL LONG SN */
+ 66,
+ /* Control Plane w/NULL enc. + ZUC int. UL LONG SN */
+ 66,
+ /* Control Plane w/NULL enc. + ZUC int. DL LONG SN */
+ 66,
+
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL LONG SN */
+ 66,
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL LONG SN */
+ 66,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL LONG SN */
+ 66,
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL LONG SN */
+ 66,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL LONG SN */
+ 66,
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ 66,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ 66,
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ 66,
+
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ 66,
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ 66,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ 66,
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ 66,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ 66,
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ 66,
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ 66,
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ 66,
+
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ 66,
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ 66,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ 66,
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ 66,
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ 66,
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ 66,
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ 66,
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ 66,
+
+
+ /* User Plane w/NULL enc. UL LONG SN */
+ 17,
+ /* User Plane w/NULL enc. DL LONG SN */
+ 17,
+ /* User Plane w/NULL enc. UL SHORT SN */
+ 16,
+ /* User Plane w/NULL enc. DL SHORT SN */
+ 16,
+ /* User Plane w/NULL enc. UL 15 BIT SN */
+ 17,
+ /* User Plane w/NULL enc. DL 15 BIT SN */
+ 17,
+ /* User Plane w/NULL enc. UL 18 BIT SN */
+ 71,
+ /* User Plane w/NULL enc. DL 18 BIT SN */
+ 71,
+ /* User Plane w/SNOW f8 enc. UL LONG SN */
+ 17,
+ /* User Plane w/SNOW f8 enc. DL LONG SN */
+ 17,
+ /* User Plane w/SNOW f8 enc. UL SHORT SN */
+ 16,
+ /* User Plane w/SNOW f8 enc. DL SHORT SN */
+ 16,
+ /* User Plane w/SNOW f8 enc. UL 15 BIT SN */
+ 17,
+ /* User Plane w/SNOW f8 enc. DL 15 BIT SN */
+ 17,
+ /* User Plane w/SNOW f8 enc. UL 18 BIT SN */
+ 71,
+ /* User Plane w/SNOW f8 enc. DL 18 BIT SN */
+ 71,
+ /* User Plane w/AES CTR enc. UL LONG SN */
+ 17,
+ /* User Plane w/AES CTR enc. DL LONG SN */
+ 17,
+ /* User Plane w/AES CTR enc. UL SHORT SN */
+ 16,
+ /* User Plane w/AES CTR enc. DL SHORT SN */
+ 16,
+ /* User Plane w/AES CTR enc. UL 15 BIT SN */
+ 17,
+ /* User Plane w/AES CTR enc. DL 15 BIT SN */
+ 17,
+ /* User Plane w/AES CTR enc. UL 18 BIT SN */
+ 71,
+ /* User Plane w/AES CTR enc. DL 18 BIT SN */
+ 71,
+ /* User Plane w/ZUC enc. UL LONG SN */
+ 17,
+ /* User Plane w/ZUC enc. DL LONG SN */
+ 17,
+ /* User Plane w/ZUC enc. UL SHORT SN */
+ 16,
+ /* User Plane w/ZUC enc. DL SHORT SN */
+ 16,
+ /* User Plane w/ZUC enc. UL 15 BIT SN */
+ 17,
+ /* User Plane w/ZUC enc. DL 15 BIT SN */
+ 17,
+ /* User Plane w/ZUC enc. UL 18 BIT SN */
+ 71,
+ /* User Plane w/ZUC enc. DL 18 BIT SN */
+ 71,
+
+ /***** u-plane with integrity for 12-bit SN *******/
+
+ /* User Plane w/NULL enc. + NULL int. UL for 12-bit SN */
+ 66,
+ /* User Plane w/NULL enc. + NULL int. DL for 12-bit SN */
+ 66,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 12-bit SN */
+ 66,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 12-bit SN */
+ 66,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 12-bit SN */
+ 66,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 12-bit SN */
+ 66,
+ /* User Plane w/NULL enc. + ZUC int. UL for 12-bit SN */
+ 66,
+ /* User Plane w/NULL enc. + ZUC int. DL for 12-bit SN */
+ 66,
+
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 12-bit SN */
+ 66,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 12-bit SN */
+ 66,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 12-bit SN */
+ 66,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 12-bit SN */
+ 66,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 12-bit SN */
+ 66,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 12-bit SN*/
+ 66,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 12-bit SN*/
+ 66,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 12-bit SN*/
+ 66,
+
+ /* User Plane w/AES CTR enc. + NULL int. UL for 12-bit SN*/
+ 66,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 12-bit SN*/
+ 66,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 12-bit SN*/
+ 66,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 12-bit SN*/
+ 66,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 12-bit SN*/
+ 66,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 12-bit SN*/
+ 66,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 12-bit SN*/
+ 66,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 12-bit SN*/
+ 66,
+
+ /* User Plane w/ZUC enc. + NULL int. UL for 12-bit SN*/
+ 66,
+ /* User Plane w/ZUC enc. + NULL int. DL for 12-bit SN*/
+ 66,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 12-bit SN*/
+ 66,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 12-bit SN*/
+ 66,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 12-bit SN*/
+ 66,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 12-bit SN*/
+ 66,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 12-bit SN*/
+ 66,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 12-bit SN*/
+ 66,
+
+ /***** u-plane with integrity for 18-bit SN *******/
+ /* User Plane w/NULL enc. + NULL int. UL for 18-bit SN */
+ 67,
+ /* User Plane w/NULL enc. + NULL int. DL for 18-bit SN */
+ 67,
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 18-bit SN */
+ 67,
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 18-bit SN */
+ 67,
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 18-bit SN */
+ 67,
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 18-bit SN */
+ 67,
+ /* User Plane w/NULL enc. + ZUC int. UL for 18-bit SN */
+ 67,
+ /* User Plane w/NULL enc. + ZUC int. DL for 18-bit SN */
+ 67,
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 18-bit SN */
+ 67,
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 18-bit SN */
+ 67,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 18-bit SN */
+ 67,
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 18-bit SN */
+ 67,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 18-bit SN */
+ 67,
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 18-bit SN*/
+ 67,
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 18-bit SN*/
+ 67,
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 18-bit SN*/
+ 67,
+ /* User Plane w/AES CTR enc. + NULL int. UL for 18-bit SN*/
+ 67,
+ /* User Plane w/AES CTR enc. + NULL int. DL for 18-bit SN*/
+ 67,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 18-bit SN*/
+ 67,
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 18-bit SN*/
+ 67,
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 18-bit SN*/
+ 67,
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 18-bit SN*/
+ 67,
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 18-bit SN*/
+ 67,
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 18-bit SN*/
+ 67,
+ /* User Plane w/ZUC enc. + NULL int. UL for 18-bit SN*/
+ 67,
+ /* User Plane w/ZUC enc. + NULL int. DL for 18-bit SN*/
+ 67,
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 18-bit SN*/
+ 67,
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 18-bit SN*/
+ 67,
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 18-bit SN*/
+ 67,
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 18-bit SN*/
+ 67,
+ /* User Plane w/ZUC enc. + ZUC int. UL for 18-bit SN*/
+ 67,
+ /* User Plane w/ZUC enc. + ZUC int. DL for 18-bit SN*/
+ 67,
+};
+
+static uint8_t *pdcp_test_data_out[] = {
+ /* Control Plane w/NULL enc. + NULL int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8, 0x00, 0x00, 0x00, 0x00},
+ /* Control Plane w/NULL enc. + NULL int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8, 0x00, 0x00, 0x00, 0x00},
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8, 0x88, 0x7f, 0x4e, 0x59},
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8, 0x9d, 0x9e, 0x45, 0x36},
+ /* Control Plane w/NULL enc. + AES CMAC int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8, 0xf3, 0xdd, 0x01, 0xdf},
+ /* Control Plane w/NULL enc. + AES CMAC int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8, 0x5d, 0x8e, 0x5d, 0x05},
+ /* Control Plane w/NULL enc. + ZUC int. UL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8, 0x18, 0xc3, 0x2e, 0x66},
+ /* Control Plane w/NULL enc. + ZUC int. DL */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8, 0x72, 0x44, 0xab, 0x64},
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL */
+ (uint8_t[]){0x8b, 0x39, 0xd1, 0x2b, 0xbd, 0x2a, 0x4c, 0x91, 0x59, 0xff,
+ 0xfa, 0xce, 0x68, 0xc0, 0x7c, 0x30, 0xd0, 0xc5, 0x08, 0x58},
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL */
+ (uint8_t[]){0x8b, 0x26, 0xf3, 0x67, 0xf1, 0x42, 0x50, 0x1a, 0x85, 0x02,
+ 0xb9, 0x00, 0xa8, 0x9b, 0xcf, 0x06, 0xd1, 0x2c, 0x86, 0x7c},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x8b, 0x39, 0xd1, 0x2b, 0xbd, 0x2a, 0x4c, 0x91, 0x59, 0xff,
+ 0xfa, 0xce, 0x68, 0xc0, 0x7c, 0x30, 0x58, 0xba, 0x46, 0x01},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x8b, 0x26, 0xf3, 0x67, 0xf1, 0x42, 0x50, 0x1a, 0x85, 0x02,
+ 0xb9, 0x00, 0xa8, 0x9b, 0xcf, 0x06, 0x4c, 0xb2, 0xc3, 0x4a},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL */
+ (uint8_t[]){0x8b, 0x39, 0xd1, 0x2b, 0xbd, 0x2a, 0x4c, 0x91, 0x59, 0xff,
+ 0xfa, 0xce, 0x68, 0xc0, 0x7c, 0x30, 0x23, 0x18, 0x09, 0x87},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL */
+ (uint8_t[]){0x8b, 0x26, 0xf3, 0x67, 0xf1, 0x42, 0x50, 0x1a, 0x85, 0x02,
+ 0xb9, 0x00, 0xa8, 0x9b, 0xcf, 0x06, 0x8c, 0xa2, 0xdb, 0x79},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL */
+ (uint8_t[]){0x8b, 0x39, 0xd1, 0x2b, 0xbd, 0x2a, 0x4c, 0x91, 0x59, 0xff,
+ 0xfa, 0xce, 0x68, 0xc0, 0x7c, 0x30, 0xc8, 0x06, 0x26, 0x3e},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL */
+ (uint8_t[]){0x8b, 0x26, 0xf3, 0x67, 0xf1, 0x42, 0x50, 0x1a, 0x85, 0x02,
+ 0xb9, 0x00, 0xa8, 0x9b, 0xcf, 0x06, 0xa3, 0x68, 0x2d, 0x18},
+ /* Control Plane w/AES CTR enc. + NULL int. UL */
+ (uint8_t[]){0x8b, 0x2c, 0x59, 0x74, 0xab, 0xdc, 0xd8, 0x36, 0xf6, 0x1b,
+ 0x54, 0x8d, 0x46, 0x93, 0x1c, 0xff, 0x32, 0x4f, 0x1a, 0x6b},
+ /* Control Plane w/AES CTR enc. + NULL int. DL */
+ (uint8_t[]){0x8b, 0xf2, 0xb9, 0x9d, 0x96, 0x51, 0xcc, 0x1e, 0xe8, 0x55,
+ 0x3e, 0x98, 0xc5, 0x58, 0xec, 0x4c, 0x92, 0x40, 0x52, 0x8e},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x8b, 0x2c, 0x59, 0x74, 0xab, 0xdc, 0xd8, 0x36, 0xf6, 0x1b,
+ 0x54, 0x8d, 0x46, 0x93, 0x1c, 0xff, 0xba, 0x30, 0x54, 0x32},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x8b, 0xf2, 0xb9, 0x9d, 0x96, 0x51, 0xcc, 0x1e, 0xe8, 0x55,
+ 0x3e, 0x98, 0xc5, 0x58, 0xec, 0x4c, 0x0f, 0xde, 0x17, 0xb8},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL */
+ (uint8_t[]){0x8b, 0x2c, 0x59, 0x74, 0xab, 0xdc, 0xd8, 0x36, 0xf6, 0x1b,
+ 0x54, 0x8d, 0x46, 0x93, 0x1c, 0xff, 0xc1, 0x92, 0x1b, 0xb4},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL */
+ (uint8_t[]){0x8b, 0xf2, 0xb9, 0x9d, 0x96, 0x51, 0xcc, 0x1e, 0xe8, 0x55,
+ 0x3e, 0x98, 0xc5, 0x58, 0xec, 0x4c, 0xcf, 0xce, 0x0f, 0x8b},
+ /* Control Plane w/AES CTR enc. + ZUC int. UL */
+ (uint8_t[]){0x8b, 0x2c, 0x59, 0x74, 0xab, 0xdc, 0xd8, 0x36, 0xf6, 0x1b,
+ 0x54, 0x8d, 0x46, 0x93, 0x1c, 0xff, 0x2a, 0x8c, 0x34, 0x0d},
+ /* Control Plane w/AES CTR enc. + ZUC int. DL */
+ (uint8_t[]){0x8b, 0xf2, 0xb9, 0x9d, 0x96, 0x51, 0xcc, 0x1e, 0xe8, 0x55,
+ 0x3e, 0x98, 0xc5, 0x58, 0xec, 0x4c, 0xe0, 0x04, 0xf9, 0xea},
+ /* Control Plane w/ZUC enc. + NULL int. UL */
+ (uint8_t[]){0x8b, 0xa6, 0x23, 0xf8, 0xca, 0x98, 0x03, 0x33, 0x81, 0x8a,
+ 0x6b, 0xfe, 0x37, 0xf2, 0x20, 0xd6, 0x68, 0x82, 0xb9, 0x06},
+ /* Control Plane w/ZUC enc. + NULL int. DL */
+ (uint8_t[]){0x8b, 0x3b, 0x42, 0xfc, 0x73, 0x83, 0x09, 0xb1, 0x3f, 0x66,
+ 0x86, 0x3a, 0x5d, 0xe7, 0x47, 0xf4, 0x44, 0x81, 0x49, 0x0e},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL */
+ (uint8_t[]){0x8b, 0xa6, 0x23, 0xf8, 0xca, 0x98, 0x03, 0x33, 0x81, 0x8a,
+ 0x6b, 0xfe, 0x37, 0xf2, 0x20, 0xd6, 0xe0, 0xfd, 0xf7, 0x5f},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL */
+ (uint8_t[]){0x8b, 0x3b, 0x42, 0xfc, 0x73, 0x83, 0x09, 0xb1, 0x3f, 0x66,
+ 0x86, 0x3a, 0x5d, 0xe7, 0x47, 0xf4, 0xd9, 0x1f, 0x0c, 0x38},
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL */
+ (uint8_t[]){0x8b, 0xa6, 0x23, 0xf8, 0xca, 0x98, 0x03, 0x33, 0x81, 0x8a,
+ 0x6b, 0xfe, 0x37, 0xf2, 0x20, 0xd6, 0x9b, 0x5f, 0xb8, 0xd9},
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL */
+ (uint8_t[]){0x8b, 0x3b, 0x42, 0xfc, 0x73, 0x83, 0x09, 0xb1, 0x3f, 0x66,
+ 0x86, 0x3a, 0x5d, 0xe7, 0x47, 0xf4, 0x19, 0x0f, 0x14, 0x0b},
+ /* Control Plane w/ZUC enc. + ZUC int. UL */
+ (uint8_t[]){0x8b, 0xa6, 0x23, 0xf8, 0xca, 0x98, 0x03, 0x33, 0x81, 0x8a,
+ 0x6b, 0xfe, 0x37, 0xf2, 0x20, 0xd6, 0x70, 0x41, 0x97, 0x60},
+ /* Control Plane w/ZUC enc. + ZUC int. DL */
+ (uint8_t[]){0x8b, 0x3b, 0x42, 0xfc, 0x73, 0x83, 0x09, 0xb1, 0x3f, 0x66,
+ 0x86, 0x3a, 0x5d, 0xe7, 0x47, 0xf4, 0x36, 0xc5, 0xe2, 0x6a},
+
+ /************ C-plane 12-bit ****************************/
+ /* Control Plane w/NULL enc. + NULL int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/NULL enc. + NULL int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* Control Plane w/NULL enc. + SNOW f9 int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0x74, 0xB8, 0x27, 0x96},
+ /* Control Plane w/NULL enc. + SNOW f9 int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0x97, 0x50, 0x3F, 0xF7},
+ /* Control Plane w/NULL enc. + AES CMAC int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0x3F, 0x71, 0x26, 0x2E},
+ /* Control Plane w/NULL enc. + AES CMAC int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xE8, 0xBB, 0xE9, 0x36},
+ /* Control Plane w/NULL enc. + ZUC int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0x54, 0xEF, 0x25, 0xC3},
+ /* Control Plane w/NULL enc. + ZUC int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0x76, 0xD0, 0x5B, 0x2C},
+
+ /* Control Plane w/SNOW f8 enc. + NULL int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0xD6, 0xCC, 0xB5, 0xCE, 0x7C, 0xF8, 0xBE, 0x68,
+ 0x2B, 0xAB, 0xC7, 0x32, 0xDA, 0x49, 0xD0, 0xC7, 0x54, 0xCA,
+ 0x18, 0xBB, 0x05, 0x6D, 0xC5, 0x5F, 0xD3, 0xA7, 0xE6, 0xD8,
+ 0xE1, 0xDF, 0x7C, 0x4F, 0x3C, 0x8B, 0x86, 0xC6, 0x8E, 0x24,
+ 0xF7, 0xBC, 0x45, 0x2A, 0x2E, 0xB4, 0xF5, 0xD0, 0x39, 0x5B,
+ 0x70, 0xB4, 0x53, 0x90, 0x98, 0x8A, 0x7C, 0x87, 0x21, 0xED,
+ 0x76, 0x83, 0x63, 0x39, 0x2C, 0xDB, 0x12, 0x07, 0xAC, 0x93},
+ /* Control Plane w/SNOW f8 enc. + NULL int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0xC1, 0x3A, 0x28, 0xBC, 0xEB, 0xAC, 0x49, 0xB9,
+ 0xA1, 0xFC, 0xD6, 0x83, 0xEC, 0xA2, 0x89, 0xE6, 0x8F, 0xCA,
+ 0x77, 0x62, 0xF8, 0x55, 0xC6, 0x8B, 0x25, 0x7B, 0xA3, 0xAF,
+ 0x67, 0x6A, 0xEB, 0x45, 0x18, 0x0B, 0xD6, 0x03, 0xDD, 0xFC,
+ 0xDE, 0x74, 0x3C, 0x4C, 0x7F, 0x5E, 0x67, 0x25, 0x9F, 0xC9,
+ 0x0F, 0xD8, 0x38, 0xE6, 0x3F, 0xD4, 0x59, 0x7A, 0x9A, 0xB7,
+ 0xF4, 0x52, 0xC6, 0x66, 0xC2, 0x73, 0xDC, 0x32, 0x96, 0x65},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0xD6, 0xCC, 0xB5, 0xCE, 0x7C, 0xF8, 0xBE, 0x68,
+ 0x2B, 0xAB, 0xC7, 0x32, 0xDA, 0x49, 0xD0, 0xC7, 0x54, 0xCA,
+ 0x18, 0xBB, 0x05, 0x6D, 0xC5, 0x5F, 0xD3, 0xA7, 0xE6, 0xD8,
+ 0xE1, 0xDF, 0x7C, 0x4F, 0x3C, 0x8B, 0x86, 0xC6, 0x8E, 0x24,
+ 0xF7, 0xBC, 0x45, 0x2A, 0x2E, 0xB4, 0xF5, 0xD0, 0x39, 0x5B,
+ 0x70, 0xB4, 0x53, 0x90, 0x98, 0x8A, 0x7C, 0x87, 0x21, 0xED,
+ 0x76, 0x83, 0x63, 0x39, 0x2C, 0xDB, 0x66, 0xBF, 0x8B, 0x05},
+ /* Control Plane w/SNOW f8 enc. + SNOW f9 int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0xC1, 0x3A, 0x28, 0xBC, 0xEB, 0xAC, 0x49, 0xB9,
+ 0xA1, 0xFC, 0xD6, 0x83, 0xEC, 0xA2, 0x89, 0xE6, 0x8F, 0xCA,
+ 0x77, 0x62, 0xF8, 0x55, 0xC6, 0x8B, 0x25, 0x7B, 0xA3, 0xAF,
+ 0x67, 0x6A, 0xEB, 0x45, 0x18, 0x0B, 0xD6, 0x03, 0xDD, 0xFC,
+ 0xDE, 0x74, 0x3C, 0x4C, 0x7F, 0x5E, 0x67, 0x25, 0x9F, 0xC9,
+ 0x0F, 0xD8, 0x38, 0xE6, 0x3F, 0xD4, 0x59, 0x7A, 0x9A, 0xB7,
+ 0xF4, 0x52, 0xC6, 0x66, 0xC2, 0x73, 0x4B, 0x62, 0xA9, 0x92},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0xD6, 0xCC, 0xB5, 0xCE, 0x7C, 0xF8, 0xBE, 0x68,
+ 0x2B, 0xAB, 0xC7, 0x32, 0xDA, 0x49, 0xD0, 0xC7, 0x54, 0xCA,
+ 0x18, 0xBB, 0x05, 0x6D, 0xC5, 0x5F, 0xD3, 0xA7, 0xE6, 0xD8,
+ 0xE1, 0xDF, 0x7C, 0x4F, 0x3C, 0x8B, 0x86, 0xC6, 0x8E, 0x24,
+ 0xF7, 0xBC, 0x45, 0x2A, 0x2E, 0xB4, 0xF5, 0xD0, 0x39, 0x5B,
+ 0x70, 0xB4, 0x53, 0x90, 0x98, 0x8A, 0x7C, 0x87, 0x21, 0xED,
+ 0x76, 0x83, 0x63, 0x39, 0x2C, 0xDB, 0x2D, 0x76, 0x8A, 0xBD},
+ /* Control Plane w/SNOW f8 enc. + AES CMAC int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0xC1, 0x3A, 0x28, 0xBC, 0xEB, 0xAC, 0x49, 0xB9,
+ 0xA1, 0xFC, 0xD6, 0x83, 0xEC, 0xA2, 0x89, 0xE6, 0x8F, 0xCA,
+ 0x77, 0x62, 0xF8, 0x55, 0xC6, 0x8B, 0x25, 0x7B, 0xA3, 0xAF,
+ 0x67, 0x6A, 0xEB, 0x45, 0x18, 0x0B, 0xD6, 0x03, 0xDD, 0xFC,
+ 0xDE, 0x74, 0x3C, 0x4C, 0x7F, 0x5E, 0x67, 0x25, 0x9F, 0xC9,
+ 0x0F, 0xD8, 0x38, 0xE6, 0x3F, 0xD4, 0x59, 0x7A, 0x9A, 0xB7,
+ 0xF4, 0x52, 0xC6, 0x66, 0xC2, 0x73, 0x34, 0x89, 0x7F, 0x53},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0xD6, 0xCC, 0xB5, 0xCE, 0x7C, 0xF8, 0xBE, 0x68,
+ 0x2B, 0xAB, 0xC7, 0x32, 0xDA, 0x49, 0xD0, 0xC7, 0x54, 0xCA,
+ 0x18, 0xBB, 0x05, 0x6D, 0xC5, 0x5F, 0xD3, 0xA7, 0xE6, 0xD8,
+ 0xE1, 0xDF, 0x7C, 0x4F, 0x3C, 0x8B, 0x86, 0xC6, 0x8E, 0x24,
+ 0xF7, 0xBC, 0x45, 0x2A, 0x2E, 0xB4, 0xF5, 0xD0, 0x39, 0x5B,
+ 0x70, 0xB4, 0x53, 0x90, 0x98, 0x8A, 0x7C, 0x87, 0x21, 0xED,
+ 0x76, 0x83, 0x63, 0x39, 0x2C, 0xDB, 0x46, 0xE8, 0x89, 0x50},
+ /* Control Plane w/SNOW f8 enc. + ZUC int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0xC1, 0x3A, 0x28, 0xBC, 0xEB, 0xAC, 0x49, 0xB9,
+ 0xA1, 0xFC, 0xD6, 0x83, 0xEC, 0xA2, 0x89, 0xE6, 0x8F, 0xCA,
+ 0x77, 0x62, 0xF8, 0x55, 0xC6, 0x8B, 0x25, 0x7B, 0xA3, 0xAF,
+ 0x67, 0x6A, 0xEB, 0x45, 0x18, 0x0B, 0xD6, 0x03, 0xDD, 0xFC,
+ 0xDE, 0x74, 0x3C, 0x4C, 0x7F, 0x5E, 0x67, 0x25, 0x9F, 0xC9,
+ 0x0F, 0xD8, 0x38, 0xE6, 0x3F, 0xD4, 0x59, 0x7A, 0x9A, 0xB7,
+ 0xF4, 0x52, 0xC6, 0x66, 0xC2, 0x73, 0xAA, 0xE2, 0xCD, 0x49},
+
+ /* Control Plane w/AES CTR enc. + NULL int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x57, 0xB2, 0x7E, 0x21, 0xE7, 0xDD, 0x56, 0xCF,
+ 0xE9, 0x97, 0x27, 0xE8, 0xA3, 0xDE, 0x4C, 0xF6, 0xD1, 0x10,
+ 0x4A, 0x7D, 0xC0, 0xD0, 0xF7, 0x1B, 0x3E, 0x16, 0xF0, 0xA8,
+ 0x4F, 0xBC, 0x17, 0x73, 0x9A, 0x69, 0x73, 0x6C, 0x83, 0xE5,
+ 0x9D, 0x56, 0xBA, 0xF7, 0x08, 0x6D, 0xC5, 0x89, 0xFB, 0xAB,
+ 0x99, 0xD1, 0x37, 0x42, 0x89, 0x8F, 0xE1, 0xAE, 0xA3, 0x22,
+ 0x60, 0x98, 0xFD, 0x79, 0x32, 0xDB, 0x86, 0x33, 0x3F, 0x3C},
+
+ /* Control Plane w/AES CTR enc. + NULL int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x84, 0x3D, 0x5A, 0x2C, 0xBA, 0x02, 0xC1, 0x6C,
+ 0x8D, 0x78, 0xB5, 0x1F, 0x51, 0x70, 0x18, 0x61, 0x92, 0x10,
+ 0x18, 0xD1, 0x25, 0xB4, 0x4B, 0x24, 0x94, 0xAE, 0x6D, 0x45,
+ 0xA7, 0x00, 0x01, 0xF8, 0x97, 0x9F, 0xF9, 0x58, 0xD6, 0x62,
+ 0x30, 0x7D, 0xE9, 0x41, 0x69, 0x65, 0x1C, 0xBA, 0x79, 0x54,
+ 0x7E, 0xF5, 0xBD, 0x60, 0xEB, 0x9E, 0xC2, 0xC9, 0x54, 0x65,
+ 0x7D, 0xAC, 0xB6, 0x47, 0xFF, 0x1C, 0x87, 0x7A, 0x32, 0x1B},
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x57, 0xB2, 0x7E, 0x21, 0xE7, 0xDD, 0x56, 0xCF,
+ 0xE9, 0x97, 0x27, 0xE8, 0xA3, 0xDE, 0x4C, 0xF6, 0xD1, 0x10,
+ 0x4A, 0x7D, 0xC0, 0xD0, 0xF7, 0x1B, 0x3E, 0x16, 0xF0, 0xA8,
+ 0x4F, 0xBC, 0x17, 0x73, 0x9A, 0x69, 0x73, 0x6C, 0x83, 0xE5,
+ 0x9D, 0x56, 0xBA, 0xF7, 0x08, 0x6D, 0xC5, 0x89, 0xFB, 0xAB,
+ 0x99, 0xD1, 0x37, 0x42, 0x89, 0x8F, 0xE1, 0xAE, 0xA3, 0x22,
+ 0x60, 0x98, 0xFD, 0x79, 0x32, 0xDB, 0xF2, 0x8B, 0x18, 0xAA},
+
+ /* Control Plane w/AES CTR enc. + SNOW f9 int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x84, 0x3D, 0x5A, 0x2C, 0xBA, 0x02, 0xC1, 0x6C,
+ 0x8D, 0x78, 0xB5, 0x1F, 0x51, 0x70, 0x18, 0x61, 0x92, 0x10,
+ 0x18, 0xD1, 0x25, 0xB4, 0x4B, 0x24, 0x94, 0xAE, 0x6D, 0x45,
+ 0xA7, 0x00, 0x01, 0xF8, 0x97, 0x9F, 0xF9, 0x58, 0xD6, 0x62,
+ 0x30, 0x7D, 0xE9, 0x41, 0x69, 0x65, 0x1C, 0xBA, 0x79, 0x54,
+ 0x7E, 0xF5, 0xBD, 0x60, 0xEB, 0x9E, 0xC2, 0xC9, 0x54, 0x65,
+ 0x7D, 0xAC, 0xB6, 0x47, 0xFF, 0x1C, 0x10, 0x2A, 0x0D, 0xEC},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x57, 0xB2, 0x7E, 0x21, 0xE7, 0xDD, 0x56, 0xCF,
+ 0xE9, 0x97, 0x27, 0xE8, 0xA3, 0xDE, 0x4C, 0xF6, 0xD1, 0x10,
+ 0x4A, 0x7D, 0xC0, 0xD0, 0xF7, 0x1B, 0x3E, 0x16, 0xF0, 0xA8,
+ 0x4F, 0xBC, 0x17, 0x73, 0x9A, 0x69, 0x73, 0x6C, 0x83, 0xE5,
+ 0x9D, 0x56, 0xBA, 0xF7, 0x08, 0x6D, 0xC5, 0x89, 0xFB, 0xAB,
+ 0x99, 0xD1, 0x37, 0x42, 0x89, 0x8F, 0xE1, 0xAE, 0xA3, 0x22,
+ 0x60, 0x98, 0xFD, 0x79, 0x32, 0xDB, 0xB9, 0x42, 0x19, 0x12},
+ /* Control Plane w/AES CTR enc. + AES CMAC int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x84, 0x3D, 0x5A, 0x2C, 0xBA, 0x02, 0xC1, 0x6C,
+ 0x8D, 0x78, 0xB5, 0x1F, 0x51, 0x70, 0x18, 0x61, 0x92, 0x10,
+ 0x18, 0xD1, 0x25, 0xB4, 0x4B, 0x24, 0x94, 0xAE, 0x6D, 0x45,
+ 0xA7, 0x00, 0x01, 0xF8, 0x97, 0x9F, 0xF9, 0x58, 0xD6, 0x62,
+ 0x30, 0x7D, 0xE9, 0x41, 0x69, 0x65, 0x1C, 0xBA, 0x79, 0x54,
+ 0x7E, 0xF5, 0xBD, 0x60, 0xEB, 0x9E, 0xC2, 0xC9, 0x54, 0x65,
+ 0x7D, 0xAC, 0xB6, 0x47, 0xFF, 0x1C, 0x6F, 0xC1, 0xDB, 0x2D},
+ /* Control Plane w/AES CTR enc. + ZUC int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x57, 0xB2, 0x7E, 0x21, 0xE7, 0xDD, 0x56, 0xCF,
+ 0xE9, 0x97, 0x27, 0xE8, 0xA3, 0xDE, 0x4C, 0xF6, 0xD1, 0x10,
+ 0x4A, 0x7D, 0xC0, 0xD0, 0xF7, 0x1B, 0x3E, 0x16, 0xF0, 0xA8,
+ 0x4F, 0xBC, 0x17, 0x73, 0x9A, 0x69, 0x73, 0x6C, 0x83, 0xE5,
+ 0x9D, 0x56, 0xBA, 0xF7, 0x08, 0x6D, 0xC5, 0x89, 0xFB, 0xAB,
+ 0x99, 0xD1, 0x37, 0x42, 0x89, 0x8F, 0xE1, 0xAE, 0xA3, 0x22,
+ 0x60, 0x98, 0xFD, 0x79, 0x32, 0xDB, 0xD2, 0xDC, 0x1A, 0xFF},
+ /* Control Plane w/AES CTR enc. + ZUC int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x84, 0x3D, 0x5A, 0x2C, 0xBA, 0x02, 0xC1, 0x6C,
+ 0x8D, 0x78, 0xB5, 0x1F, 0x51, 0x70, 0x18, 0x61, 0x92, 0x10,
+ 0x18, 0xD1, 0x25, 0xB4, 0x4B, 0x24, 0x94, 0xAE, 0x6D, 0x45,
+ 0xA7, 0x00, 0x01, 0xF8, 0x97, 0x9F, 0xF9, 0x58, 0xD6, 0x62,
+ 0x30, 0x7D, 0xE9, 0x41, 0x69, 0x65, 0x1C, 0xBA, 0x79, 0x54,
+ 0x7E, 0xF5, 0xBD, 0x60, 0xEB, 0x9E, 0xC2, 0xC9, 0x54, 0x65,
+ 0x7D, 0xAC, 0xB6, 0x47, 0xFF, 0x1C, 0xF1, 0xAA, 0x69, 0x37},
+ /* Control Plane w/ZUC enc. + NULL int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x47, 0x9B, 0x21, 0xD1, 0xB2, 0x99, 0x23, 0x56,
+ 0xC5, 0xFF, 0xC2, 0xB7, 0x7D, 0x30, 0xBA, 0xFB, 0x43, 0xED,
+ 0x79, 0xC9, 0x9D, 0x9D, 0x38, 0x35, 0xC6, 0x7B, 0xD0, 0xAA,
+ 0x33, 0x08, 0x88, 0x72, 0x16, 0x1D, 0xF7, 0xA0, 0xD9, 0xEC,
+ 0x73, 0x45, 0x51, 0x87, 0xFF, 0x64, 0xFB, 0x3C, 0xA6, 0xB5,
+ 0xD0, 0x1C, 0xD6, 0x90, 0x3D, 0x40, 0x54, 0x22, 0x2F, 0x6C,
+ 0xE4, 0xB1, 0x71, 0x15, 0x78, 0x54, 0x1D, 0xCD, 0x3A, 0xE0},
+ /* Control Plane w/ZUC enc. + NULL int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x3F, 0x01, 0xCE, 0xBD, 0x8A, 0x98, 0x7B, 0x26,
+ 0xF1, 0x28, 0x74, 0xDC, 0x26, 0x2B, 0x02, 0xE8, 0x9C, 0xBC,
+ 0x98, 0x41, 0xC5, 0x03, 0x57, 0x48, 0x83, 0xBB, 0x8E, 0xCA,
+ 0x87, 0xCD, 0x8B, 0xE9, 0x96, 0x2A, 0x35, 0x5C, 0xD3, 0x32,
+ 0x53, 0xA7, 0x12, 0xC2, 0xBC, 0x0C, 0x75, 0x98, 0x8E, 0x29,
+ 0x85, 0xAF, 0x0A, 0xFF, 0xAC, 0x6A, 0x00, 0x19, 0xC1, 0x51,
+ 0x53, 0xDE, 0x78, 0x07, 0x6D, 0x10, 0x90, 0xF5, 0xBD, 0x56},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x47, 0x9B, 0x21, 0xD1, 0xB2, 0x99, 0x23, 0x56,
+ 0xC5, 0xFF, 0xC2, 0xB7, 0x7D, 0x30, 0xBA, 0xFB, 0x43, 0xED,
+ 0x79, 0xC9, 0x9D, 0x9D, 0x38, 0x35, 0xC6, 0x7B, 0xD0, 0xAA,
+ 0x33, 0x08, 0x88, 0x72, 0x16, 0x1D, 0xF7, 0xA0, 0xD9, 0xEC,
+ 0x73, 0x45, 0x51, 0x87, 0xFF, 0x64, 0xFB, 0x3C, 0xA6, 0xB5,
+ 0xD0, 0x1C, 0xD6, 0x90, 0x3D, 0x40, 0x54, 0x22, 0x2F, 0x6C,
+ 0xE4, 0xB1, 0x71, 0x15, 0x78, 0x54, 0x69, 0x75, 0x1D, 0x76},
+ /* Control Plane w/ZUC enc. + SNOW f9 int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x3F, 0x01, 0xCE, 0xBD, 0x8A, 0x98, 0x7B, 0x26,
+ 0xF1, 0x28, 0x74, 0xDC, 0x26, 0x2B, 0x02, 0xE8, 0x9C, 0xBC,
+ 0x98, 0x41, 0xC5, 0x03, 0x57, 0x48, 0x83, 0xBB, 0x8E, 0xCA,
+ 0x87, 0xCD, 0x8B, 0xE9, 0x96, 0x2A, 0x35, 0x5C, 0xD3, 0x32,
+ 0x53, 0xA7, 0x12, 0xC2, 0xBC, 0x0C, 0x75, 0x98, 0x8E, 0x29,
+ 0x85, 0xAF, 0x0A, 0xFF, 0xAC, 0x6A, 0x00, 0x19, 0xC1, 0x51,
+ 0x53, 0xDE, 0x78, 0x07, 0x6D, 0x10, 0x07, 0xA5, 0x82, 0xA1},
+ /* Control Plane w/ZUC enc. + AES CMAC int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x47, 0x9B, 0x21, 0xD1, 0xB2, 0x99, 0x23, 0x56,
+ 0xC5, 0xFF, 0xC2, 0xB7, 0x7D, 0x30, 0xBA, 0xFB, 0x43, 0xED,
+ 0x79, 0xC9, 0x9D, 0x9D, 0x38, 0x35, 0xC6, 0x7B, 0xD0, 0xAA,
+ 0x33, 0x08, 0x88, 0x72, 0x16, 0x1D, 0xF7, 0xA0, 0xD9, 0xEC,
+ 0x73, 0x45, 0x51, 0x87, 0xFF, 0x64, 0xFB, 0x3C, 0xA6, 0xB5,
+ 0xD0, 0x1C, 0xD6, 0x90, 0x3D, 0x40, 0x54, 0x22, 0x2F, 0x6C,
+ 0xE4, 0xB1, 0x71, 0x15, 0x78, 0x54, 0x22, 0xBC, 0x1C, 0xCE},
+ /* Control Plane w/ZUC enc. + AES CMAC int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x3F, 0x01, 0xCE, 0xBD, 0x8A, 0x98, 0x7B, 0x26,
+ 0xF1, 0x28, 0x74, 0xDC, 0x26, 0x2B, 0x02, 0xE8, 0x9C, 0xBC,
+ 0x98, 0x41, 0xC5, 0x03, 0x57, 0x48, 0x83, 0xBB, 0x8E, 0xCA,
+ 0x87, 0xCD, 0x8B, 0xE9, 0x96, 0x2A, 0x35, 0x5C, 0xD3, 0x32,
+ 0x53, 0xA7, 0x12, 0xC2, 0xBC, 0x0C, 0x75, 0x98, 0x8E, 0x29,
+ 0x85, 0xAF, 0x0A, 0xFF, 0xAC, 0x6A, 0x00, 0x19, 0xC1, 0x51,
+ 0x53, 0xDE, 0x78, 0x07, 0x6D, 0x10, 0x78, 0x4E, 0x54, 0x60},
+ /* Control Plane w/ZUC enc. + ZUC int. UL LONG SN */
+ (uint8_t[]){0x50, 0x01, 0x47, 0x9B, 0x21, 0xD1, 0xB2, 0x99, 0x23, 0x56,
+ 0xC5, 0xFF, 0xC2, 0xB7, 0x7D, 0x30, 0xBA, 0xFB, 0x43, 0xED,
+ 0x79, 0xC9, 0x9D, 0x9D, 0x38, 0x35, 0xC6, 0x7B, 0xD0, 0xAA,
+ 0x33, 0x08, 0x88, 0x72, 0x16, 0x1D, 0xF7, 0xA0, 0xD9, 0xEC,
+ 0x73, 0x45, 0x51, 0x87, 0xFF, 0x64, 0xFB, 0x3C, 0xA6, 0xB5,
+ 0xD0, 0x1C, 0xD6, 0x90, 0x3D, 0x40, 0x54, 0x22, 0x2F, 0x6C,
+ 0xE4, 0xB1, 0x71, 0x15, 0x78, 0x54, 0x49, 0x22, 0x1F, 0x23},
+ /* Control Plane w/ZUC enc. + ZUC int. DL LONG SN */
+ (uint8_t[]){0xA0, 0x00, 0x3F, 0x01, 0xCE, 0xBD, 0x8A, 0x98, 0x7B, 0x26,
+ 0xF1, 0x28, 0x74, 0xDC, 0x26, 0x2B, 0x02, 0xE8, 0x9C, 0xBC,
+ 0x98, 0x41, 0xC5, 0x03, 0x57, 0x48, 0x83, 0xBB, 0x8E, 0xCA,
+ 0x87, 0xCD, 0x8B, 0xE9, 0x96, 0x2A, 0x35, 0x5C, 0xD3, 0x32,
+ 0x53, 0xA7, 0x12, 0xC2, 0xBC, 0x0C, 0x75, 0x98, 0x8E, 0x29,
+ 0x85, 0xAF, 0x0A, 0xFF, 0xAC, 0x6A, 0x00, 0x19, 0xC1, 0x51,
+ 0x53, 0xDE, 0x78, 0x07, 0x6D, 0x10, 0xE6, 0x25, 0xE6, 0x7A},
+
+ /* User Plane w/NULL enc. UL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. DL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. UL SHORT SN */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. DL SHORT SN */
+ (uint8_t[]){0x8b, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4, 0x57,
+ 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. UL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. DL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xad, 0x9c, 0x44, 0x1f, 0x89, 0x0b, 0x38, 0xc4,
+ 0x57, 0xa4, 0x9d, 0x42, 0x14, 0x07, 0xe8},
+ /* User Plane w/NULL enc. UL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69, 0x00, 0x00, 0x00, 0x00},
+ /* User Plane w/NULL enc. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69, 0x00, 0x00, 0x00, 0x00},
+ /* User Plane w/SNOW f8 enc. UL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0x7a, 0xe0, 0x00, 0x07, 0x2a, 0xa6, 0xef, 0xdc,
+ 0x75, 0xef, 0x2e, 0x27, 0x0f, 0x69, 0x3d},
+ /* User Plane w/SNOW f8 enc. DL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0x7e, 0xbb, 0x80, 0x20, 0xba, 0xef, 0xe7, 0xf7,
+ 0xef, 0x69, 0x51, 0x85, 0x09, 0xa5, 0xab},
+ /* User Plane w/SNOW f8 enc. UL SHORT SN */
+ (uint8_t[]){0x8b, 0x80, 0xcf, 0xe5, 0x27, 0xe2, 0x88, 0x2a, 0xac, 0xc5,
+ 0xaf, 0x49, 0x9b, 0x3e, 0x48, 0x89},
+ /* User Plane w/SNOW f8 enc. DL SHORT SN */
+ (uint8_t[]){0x8b, 0xe2, 0x51, 0x58, 0x88, 0xff, 0x1a, 0x00, 0xe4, 0x67,
+ 0x05, 0x46, 0x24, 0x2f, 0x07, 0xb7},
+ /* User Plane w/SNOW f8 enc. UL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xbe, 0x72, 0x05, 0x78, 0x92, 0xec, 0xb1, 0x4f,
+ 0xdd, 0x5d, 0xfc, 0x60, 0x2c, 0x9a, 0x85},
+ /* User Plane w/SNOW f8 enc. DL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0x0b, 0x50, 0xf3, 0xff, 0x37, 0xe3, 0x6b, 0xaf,
+ 0x08, 0xd8, 0xf6, 0x1f, 0xca, 0x6f, 0xbc},
+ /* User Plane w/SNOW enc. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0x9A, 0xAF, 0x1D, 0x21, 0x2F, 0x48, 0xB2, 0x30,
+ 0xCF, 0xBB, 0x8A, 0x2C, 0xB7, 0x57, 0xB6, 0x27, 0x89, 0x0D, 0x91,
+ 0x03, 0x2C, 0x2B, 0x8D, 0x29, 0x4A, 0xBD, 0x8D, 0x48, 0xD2, 0x69,
+ 0x37, 0xB1, 0xA1, 0x97, 0x12, 0xBD, 0x0A, 0x91, 0x4D, 0xEB, 0x76,
+ 0xC8, 0x96, 0x7A, 0x0A, 0x25, 0x08, 0xEB, 0x41, 0x30, 0x00, 0x33,
+ 0xC7, 0xFF, 0x33, 0x4E, 0xC1, 0xFE, 0x5C, 0x0F, 0x15, 0xE7, 0x9F,
+ 0x31, 0x55, 0xDA, 0x18, 0x4D},
+ /* User Plane w/SNOW enc. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0x22, 0x2D, 0x15, 0xBA, 0x95, 0xAC, 0x47, 0x5A,
+ 0xE3, 0x90, 0x82, 0xEA, 0xC2, 0x93, 0x80, 0x23, 0xE9, 0xAC, 0xEA, 0x5D,
+ 0xAA, 0x70, 0x42, 0x04, 0x7C, 0xE6, 0xA6, 0x1D, 0x91, 0xAE, 0x2E, 0x43,
+ 0x60, 0x39, 0x23, 0x06, 0xD2, 0x31, 0x73, 0x98, 0xF0, 0x61, 0x47, 0xB5,
+ 0xC4, 0xB0, 0xB8, 0x31, 0x50, 0x9E, 0x37, 0x15, 0x0E, 0x0D, 0x29, 0x9D,
+ 0xB3, 0x78, 0xFB, 0x9D, 0x5C, 0x90, 0xF8, 0x80, 0x53, 0x93, 0xEF, 0x7C},
+ /* User Plane w/AES CTR enc. UL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xde, 0x0a, 0x59, 0xca, 0x7d, 0x93, 0xa3, 0xb5,
+ 0xd2, 0x88, 0xb3, 0x04, 0xa2, 0x12, 0x09},
+ /* User Plane w/AES CTR enc. DL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0x69, 0x92, 0x25, 0xd8, 0xe9, 0xd5, 0xe9, 0x53,
+ 0x60, 0x49, 0x9f, 0xe9, 0x8f, 0xbe, 0x6a},
+ /* User Plane w/AES CTR enc. UL SHORT SN */
+ (uint8_t[]){0x8b, 0x0f, 0xa1, 0xf2, 0x56, 0x6e, 0xee, 0x62, 0x1c, 0x62,
+ 0x06, 0x7e, 0x38, 0x4a, 0x02, 0xa4},
+ /* User Plane w/AES CTR enc. DL SHORT SN */
+ (uint8_t[]){0x8b, 0x00, 0x8d, 0x50, 0x80, 0x30, 0xda, 0xc7, 0x14, 0xc5,
+ 0xe0, 0xc8, 0xfb, 0x83, 0xd0, 0x73},
+ /* User Plane w/AES CTR enc. UL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xa1, 0x2e, 0xa3, 0x64, 0xa9, 0x81, 0xbc, 0xd3,
+ 0x6f, 0xef, 0xee, 0x30, 0x71, 0x23, 0x85},
+ /* User Plane w/AES CTR enc. DL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xc7, 0xf2, 0x23, 0xb3, 0xbe, 0xc0, 0xdf, 0xc5,
+ 0xed, 0x37, 0x35, 0x7c, 0x66, 0xa3, 0xf9},
+ /* User Plane w/AES enc. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xBF, 0x31, 0x94, 0xCF, 0x6E, 0x99, 0x84, 0x08,
+ 0xF1, 0x90, 0xC2, 0x22, 0xD0, 0xD2, 0x3D, 0x44, 0x75, 0x7F, 0xC5, 0x0F,
+ 0xAC, 0x7C, 0x18, 0x46, 0xA5, 0x3E, 0x2F, 0x0F, 0x26, 0x9E, 0x5A, 0x49,
+ 0xF7, 0xCB, 0x70, 0x17, 0xBC, 0x01, 0x1D, 0xA3, 0x65, 0x0E, 0x4B, 0x53,
+ 0x14, 0x73, 0x76, 0xDE, 0x54, 0xA0, 0xF9, 0x4C, 0xC2, 0x8F, 0x02, 0x88,
+ 0x36, 0xC7, 0xC4, 0x5A, 0x57, 0x7D, 0xA1, 0x0D, 0xC1, 0x66, 0x96, 0xC8},
+ /* User Plane w/AES enc. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0x01, 0x0D, 0x4B, 0x5E, 0xD3, 0xCE, 0x96, 0xE1,
+ 0x9A, 0x9D, 0xB3, 0x01, 0xD6, 0x40, 0x50, 0x00, 0x6C, 0x63, 0xFD, 0x37,
+ 0xD9, 0xBB, 0x3B, 0x76, 0xE5, 0x7D, 0x3C, 0xFC, 0xE3, 0x9D, 0x45, 0x4A,
+ 0x07, 0x14, 0xD3, 0x14, 0xBC, 0x7E, 0x57, 0xAB, 0xB0, 0x8D, 0x8F, 0x42,
+ 0x39, 0x22, 0xB2, 0xF6, 0x5F, 0xBD, 0x58, 0xE3, 0xE0, 0xDB, 0xD5, 0x7F,
+ 0xFB, 0x78, 0x95, 0xE1, 0x5E, 0x36, 0xF8, 0x52, 0x98, 0x15, 0x68, 0x35},
+ /* User Plane w/ZUC enc. UL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0xfb, 0xb6, 0x0e, 0x81, 0xa1, 0x9e, 0xc8, 0xeb,
+ 0x90, 0xa8, 0xc7, 0x0e, 0x27, 0xcb, 0xb0},
+ /* User Plane w/ZUC enc. DL LONG SN */
+ (uint8_t[]){0x8b, 0x26, 0x2f, 0x5d, 0xa4, 0x82, 0xfb, 0xce, 0x1f, 0x3a,
+ 0xb5, 0x66, 0x60, 0x40, 0x65, 0x2b, 0x40},
+ /* User Plane w/ZUC enc. UL SHORT SN */
+ (uint8_t[]){0x8b, 0xcb, 0x75, 0x03, 0xd5, 0xed, 0xea, 0x73, 0x39, 0xf5,
+ 0x07, 0x03, 0x04, 0x51, 0xc9, 0x5e},
+ /* User Plane w/ZUC enc. DL SHORT SN */
+ (uint8_t[]){0x8b, 0xe9, 0xd2, 0x49, 0x7f, 0xfd, 0x98, 0x9f, 0xc4, 0x6a,
+ 0xcb, 0xe6, 0x4e, 0x21, 0x33, 0xd2},
+ /* User Plane w/ZUC enc. UL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0x01, 0x0a, 0xba, 0x79, 0xf8, 0xe5, 0x9f, 0x22,
+ 0x37, 0xab, 0x5c, 0x7e, 0xad, 0xd6, 0x6b},
+ /* User Plane w/ZUC enc. DL 15 BIT SN */
+ (uint8_t[]){0x8b, 0x26, 0xa3, 0x1a, 0x1e, 0x22, 0xf7, 0x17, 0x8a, 0xb5,
+ 0x59, 0xd8, 0x2b, 0x13, 0xdd, 0x12, 0x4e},
+ /* User Plane w/ZUC enc. UL for 18-bit SN*/
+ (uint8_t[]){0x0C, 0x00, 0x01, 0x32, 0xF9, 0x21, 0x1D, 0xBB, 0xF8, 0xE5, 0x7C,
+ 0x74, 0xC2, 0xD7, 0xFF, 0x74, 0x59, 0x3A, 0x69, 0xD1, 0x8B, 0x65, 0x98,
+ 0xB9, 0x3C, 0xFB, 0x63, 0xB1, 0x9E, 0xB7, 0xCA, 0x04, 0x68, 0xB9, 0xAB,
+ 0xA2, 0x5A, 0xAF, 0x15, 0x8E, 0x71, 0xED, 0xE4, 0xFA, 0x99, 0x79, 0xF9,
+ 0x51, 0x54, 0x82, 0x69, 0x4C, 0x45, 0x0B, 0xFA, 0x87, 0x4D, 0x97, 0x6E,
+ 0xB0, 0xC9, 0x06, 0x08, 0x6B, 0xFC, 0x4A, 0x85, 0x43, 0x62, 0x73, 0xD8},
+ /* User Plane w/ZUC enc. DL for 18-bit SN*/
+ (uint8_t[]){0xF8, 0x00, 0x00, 0x30, 0x62, 0x48, 0xC0, 0xB1, 0xED, 0x1F, 0x13,
+ 0x8A, 0x7A, 0x62, 0x40, 0x12, 0x35, 0x54, 0x03, 0x93, 0xBD, 0xE5, 0x88,
+ 0x51, 0x38, 0xB5, 0x89, 0xC6, 0xD3, 0xB5, 0x44, 0xC2, 0xB9, 0xB9, 0x59,
+ 0x7C, 0xEC, 0x71, 0xD8, 0x42, 0x01, 0x03, 0x3C, 0x0E, 0xBB, 0x7B, 0xDD,
+ 0x7D, 0x2D, 0xE0, 0x3C, 0xE3, 0x81, 0xAA, 0xEA, 0xCC, 0xD7, 0xFC, 0x46,
+ 0x07, 0x7C, 0x8E, 0x8E, 0x0E, 0x99, 0xB8, 0x31, 0x65, 0x17, 0xF6, 0xE3},
+
+ /************************* 12-bit u-plane with int ************/
+ /* User Plane w/NULL enc. + NULL int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/NULL enc. + NULL int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD},
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0x74, 0xB8, 0x27, 0x96},
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0x97, 0x50, 0x3F, 0xF7},
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0x3F, 0x71, 0x26, 0x2E},
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xE8, 0xBB, 0xE9, 0x36},
+ /* User Plane w/NULL enc. + ZUC int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0x54, 0xEF, 0x25, 0xC3},
+ /* User Plane w/NULL enc. + ZUC int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x86, 0xB8, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82,
+ 0x53, 0xFD, 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71,
+ 0xFB, 0xEB, 0x35, 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57,
+ 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70,
+ 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F, 0xEE, 0x2C,
+ 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0x76, 0xD0, 0x5B, 0x2C},
+
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0xD6, 0xCC, 0xB5, 0xCE, 0x7C, 0xF8, 0xBE, 0x68,
+ 0x2B, 0xAB, 0xC7, 0x32, 0xDA, 0x49, 0xD0, 0xC7, 0x54, 0xCA,
+ 0x18, 0xBB, 0x05, 0x6D, 0xC5, 0x5F, 0xD3, 0xA7, 0xE6, 0xD8,
+ 0xE1, 0xDF, 0x7C, 0x4F, 0x3C, 0x8B, 0x86, 0xC6, 0x8E, 0x24,
+ 0xF7, 0xBC, 0x45, 0x2A, 0x2E, 0xB4, 0xF5, 0xD0, 0x39, 0x5B,
+ 0x70, 0xB4, 0x53, 0x90, 0x98, 0x8A, 0x7C, 0x87, 0x21, 0xED,
+ 0x76, 0x83, 0x63, 0x39, 0x2C, 0xDB, 0x12, 0x07, 0xAC, 0x93},
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0xC1, 0x3A, 0x28, 0xBC, 0xEB, 0xAC, 0x49, 0xB9,
+ 0xA1, 0xFC, 0xD6, 0x83, 0xEC, 0xA2, 0x89, 0xE6, 0x8F, 0xCA,
+ 0x77, 0x62, 0xF8, 0x55, 0xC6, 0x8B, 0x25, 0x7B, 0xA3, 0xAF,
+ 0x67, 0x6A, 0xEB, 0x45, 0x18, 0x0B, 0xD6, 0x03, 0xDD, 0xFC,
+ 0xDE, 0x74, 0x3C, 0x4C, 0x7F, 0x5E, 0x67, 0x25, 0x9F, 0xC9,
+ 0x0F, 0xD8, 0x38, 0xE6, 0x3F, 0xD4, 0x59, 0x7A, 0x9A, 0xB7,
+ 0xF4, 0x52, 0xC6, 0x66, 0xC2, 0x73, 0xDC, 0x32, 0x96, 0x65},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0xD6, 0xCC, 0xB5, 0xCE, 0x7C, 0xF8, 0xBE, 0x68,
+ 0x2B, 0xAB, 0xC7, 0x32, 0xDA, 0x49, 0xD0, 0xC7, 0x54, 0xCA,
+ 0x18, 0xBB, 0x05, 0x6D, 0xC5, 0x5F, 0xD3, 0xA7, 0xE6, 0xD8,
+ 0xE1, 0xDF, 0x7C, 0x4F, 0x3C, 0x8B, 0x86, 0xC6, 0x8E, 0x24,
+ 0xF7, 0xBC, 0x45, 0x2A, 0x2E, 0xB4, 0xF5, 0xD0, 0x39, 0x5B,
+ 0x70, 0xB4, 0x53, 0x90, 0x98, 0x8A, 0x7C, 0x87, 0x21, 0xED,
+ 0x76, 0x83, 0x63, 0x39, 0x2C, 0xDB, 0x66, 0xBF, 0x8B, 0x05},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0xC1, 0x3A, 0x28, 0xBC, 0xEB, 0xAC, 0x49, 0xB9,
+ 0xA1, 0xFC, 0xD6, 0x83, 0xEC, 0xA2, 0x89, 0xE6, 0x8F, 0xCA,
+ 0x77, 0x62, 0xF8, 0x55, 0xC6, 0x8B, 0x25, 0x7B, 0xA3, 0xAF,
+ 0x67, 0x6A, 0xEB, 0x45, 0x18, 0x0B, 0xD6, 0x03, 0xDD, 0xFC,
+ 0xDE, 0x74, 0x3C, 0x4C, 0x7F, 0x5E, 0x67, 0x25, 0x9F, 0xC9,
+ 0x0F, 0xD8, 0x38, 0xE6, 0x3F, 0xD4, 0x59, 0x7A, 0x9A, 0xB7,
+ 0xF4, 0x52, 0xC6, 0x66, 0xC2, 0x73, 0x4B, 0x62, 0xA9, 0x92},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0xD6, 0xCC, 0xB5, 0xCE, 0x7C, 0xF8, 0xBE, 0x68,
+ 0x2B, 0xAB, 0xC7, 0x32, 0xDA, 0x49, 0xD0, 0xC7, 0x54, 0xCA,
+ 0x18, 0xBB, 0x05, 0x6D, 0xC5, 0x5F, 0xD3, 0xA7, 0xE6, 0xD8,
+ 0xE1, 0xDF, 0x7C, 0x4F, 0x3C, 0x8B, 0x86, 0xC6, 0x8E, 0x24,
+ 0xF7, 0xBC, 0x45, 0x2A, 0x2E, 0xB4, 0xF5, 0xD0, 0x39, 0x5B,
+ 0x70, 0xB4, 0x53, 0x90, 0x98, 0x8A, 0x7C, 0x87, 0x21, 0xED,
+ 0x76, 0x83, 0x63, 0x39, 0x2C, 0xDB, 0x2D, 0x76, 0x8A, 0xBD},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0xC1, 0x3A, 0x28, 0xBC, 0xEB, 0xAC, 0x49, 0xB9,
+ 0xA1, 0xFC, 0xD6, 0x83, 0xEC, 0xA2, 0x89, 0xE6, 0x8F, 0xCA,
+ 0x77, 0x62, 0xF8, 0x55, 0xC6, 0x8B, 0x25, 0x7B, 0xA3, 0xAF,
+ 0x67, 0x6A, 0xEB, 0x45, 0x18, 0x0B, 0xD6, 0x03, 0xDD, 0xFC,
+ 0xDE, 0x74, 0x3C, 0x4C, 0x7F, 0x5E, 0x67, 0x25, 0x9F, 0xC9,
+ 0x0F, 0xD8, 0x38, 0xE6, 0x3F, 0xD4, 0x59, 0x7A, 0x9A, 0xB7,
+ 0xF4, 0x52, 0xC6, 0x66, 0xC2, 0x73, 0x34, 0x89, 0x7F, 0x53},
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0xD6, 0xCC, 0xB5, 0xCE, 0x7C, 0xF8, 0xBE, 0x68,
+ 0x2B, 0xAB, 0xC7, 0x32, 0xDA, 0x49, 0xD0, 0xC7, 0x54, 0xCA,
+ 0x18, 0xBB, 0x05, 0x6D, 0xC5, 0x5F, 0xD3, 0xA7, 0xE6, 0xD8,
+ 0xE1, 0xDF, 0x7C, 0x4F, 0x3C, 0x8B, 0x86, 0xC6, 0x8E, 0x24,
+ 0xF7, 0xBC, 0x45, 0x2A, 0x2E, 0xB4, 0xF5, 0xD0, 0x39, 0x5B,
+ 0x70, 0xB4, 0x53, 0x90, 0x98, 0x8A, 0x7C, 0x87, 0x21, 0xED,
+ 0x76, 0x83, 0x63, 0x39, 0x2C, 0xDB, 0x46, 0xE8, 0x89, 0x50},
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0xC1, 0x3A, 0x28, 0xBC, 0xEB, 0xAC, 0x49, 0xB9,
+ 0xA1, 0xFC, 0xD6, 0x83, 0xEC, 0xA2, 0x89, 0xE6, 0x8F, 0xCA,
+ 0x77, 0x62, 0xF8, 0x55, 0xC6, 0x8B, 0x25, 0x7B, 0xA3, 0xAF,
+ 0x67, 0x6A, 0xEB, 0x45, 0x18, 0x0B, 0xD6, 0x03, 0xDD, 0xFC,
+ 0xDE, 0x74, 0x3C, 0x4C, 0x7F, 0x5E, 0x67, 0x25, 0x9F, 0xC9,
+ 0x0F, 0xD8, 0x38, 0xE6, 0x3F, 0xD4, 0x59, 0x7A, 0x9A, 0xB7,
+ 0xF4, 0x52, 0xC6, 0x66, 0xC2, 0x73, 0xAA, 0xE2, 0xCD, 0x49},
+ /* User Plane w/AES CTR enc. + NULL int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x57, 0xB2, 0x7E, 0x21, 0xE7, 0xDD, 0x56, 0xCF,
+ 0xE9, 0x97, 0x27, 0xE8, 0xA3, 0xDE, 0x4C, 0xF6, 0xD1, 0x10,
+ 0x4A, 0x7D, 0xC0, 0xD0, 0xF7, 0x1B, 0x3E, 0x16, 0xF0, 0xA8,
+ 0x4F, 0xBC, 0x17, 0x73, 0x9A, 0x69, 0x73, 0x6C, 0x83, 0xE5,
+ 0x9D, 0x56, 0xBA, 0xF7, 0x08, 0x6D, 0xC5, 0x89, 0xFB, 0xAB,
+ 0x99, 0xD1, 0x37, 0x42, 0x89, 0x8F, 0xE1, 0xAE, 0xA3, 0x22,
+ 0x60, 0x98, 0xFD, 0x79, 0x32, 0xDB, 0x86, 0x33, 0x3F, 0x3C},
+
+ /* User Plane w/AES CTR enc. + NULL int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x84, 0x3D, 0x5A, 0x2C, 0xBA, 0x02, 0xC1, 0x6C,
+ 0x8D, 0x78, 0xB5, 0x1F, 0x51, 0x70, 0x18, 0x61, 0x92, 0x10,
+ 0x18, 0xD1, 0x25, 0xB4, 0x4B, 0x24, 0x94, 0xAE, 0x6D, 0x45,
+ 0xA7, 0x00, 0x01, 0xF8, 0x97, 0x9F, 0xF9, 0x58, 0xD6, 0x62,
+ 0x30, 0x7D, 0xE9, 0x41, 0x69, 0x65, 0x1C, 0xBA, 0x79, 0x54,
+ 0x7E, 0xF5, 0xBD, 0x60, 0xEB, 0x9E, 0xC2, 0xC9, 0x54, 0x65,
+ 0x7D, 0xAC, 0xB6, 0x47, 0xFF, 0x1C, 0x87, 0x7A, 0x32, 0x1B},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x57, 0xB2, 0x7E, 0x21, 0xE7, 0xDD, 0x56, 0xCF,
+ 0xE9, 0x97, 0x27, 0xE8, 0xA3, 0xDE, 0x4C, 0xF6, 0xD1, 0x10,
+ 0x4A, 0x7D, 0xC0, 0xD0, 0xF7, 0x1B, 0x3E, 0x16, 0xF0, 0xA8,
+ 0x4F, 0xBC, 0x17, 0x73, 0x9A, 0x69, 0x73, 0x6C, 0x83, 0xE5,
+ 0x9D, 0x56, 0xBA, 0xF7, 0x08, 0x6D, 0xC5, 0x89, 0xFB, 0xAB,
+ 0x99, 0xD1, 0x37, 0x42, 0x89, 0x8F, 0xE1, 0xAE, 0xA3, 0x22,
+ 0x60, 0x98, 0xFD, 0x79, 0x32, 0xDB, 0xF2, 0x8B, 0x18, 0xAA},
+
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x84, 0x3D, 0x5A, 0x2C, 0xBA, 0x02, 0xC1, 0x6C,
+ 0x8D, 0x78, 0xB5, 0x1F, 0x51, 0x70, 0x18, 0x61, 0x92, 0x10,
+ 0x18, 0xD1, 0x25, 0xB4, 0x4B, 0x24, 0x94, 0xAE, 0x6D, 0x45,
+ 0xA7, 0x00, 0x01, 0xF8, 0x97, 0x9F, 0xF9, 0x58, 0xD6, 0x62,
+ 0x30, 0x7D, 0xE9, 0x41, 0x69, 0x65, 0x1C, 0xBA, 0x79, 0x54,
+ 0x7E, 0xF5, 0xBD, 0x60, 0xEB, 0x9E, 0xC2, 0xC9, 0x54, 0x65,
+ 0x7D, 0xAC, 0xB6, 0x47, 0xFF, 0x1C, 0x10, 0x2A, 0x0D, 0xEC},
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x57, 0xB2, 0x7E, 0x21, 0xE7, 0xDD, 0x56, 0xCF,
+ 0xE9, 0x97, 0x27, 0xE8, 0xA3, 0xDE, 0x4C, 0xF6, 0xD1, 0x10,
+ 0x4A, 0x7D, 0xC0, 0xD0, 0xF7, 0x1B, 0x3E, 0x16, 0xF0, 0xA8,
+ 0x4F, 0xBC, 0x17, 0x73, 0x9A, 0x69, 0x73, 0x6C, 0x83, 0xE5,
+ 0x9D, 0x56, 0xBA, 0xF7, 0x08, 0x6D, 0xC5, 0x89, 0xFB, 0xAB,
+ 0x99, 0xD1, 0x37, 0x42, 0x89, 0x8F, 0xE1, 0xAE, 0xA3, 0x22,
+ 0x60, 0x98, 0xFD, 0x79, 0x32, 0xDB, 0xB9, 0x42, 0x19, 0x12},
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x84, 0x3D, 0x5A, 0x2C, 0xBA, 0x02, 0xC1, 0x6C,
+ 0x8D, 0x78, 0xB5, 0x1F, 0x51, 0x70, 0x18, 0x61, 0x92, 0x10,
+ 0x18, 0xD1, 0x25, 0xB4, 0x4B, 0x24, 0x94, 0xAE, 0x6D, 0x45,
+ 0xA7, 0x00, 0x01, 0xF8, 0x97, 0x9F, 0xF9, 0x58, 0xD6, 0x62,
+ 0x30, 0x7D, 0xE9, 0x41, 0x69, 0x65, 0x1C, 0xBA, 0x79, 0x54,
+ 0x7E, 0xF5, 0xBD, 0x60, 0xEB, 0x9E, 0xC2, 0xC9, 0x54, 0x65,
+ 0x7D, 0xAC, 0xB6, 0x47, 0xFF, 0x1C, 0x6F, 0xC1, 0xDB, 0x2D},
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x57, 0xB2, 0x7E, 0x21, 0xE7, 0xDD, 0x56, 0xCF,
+ 0xE9, 0x97, 0x27, 0xE8, 0xA3, 0xDE, 0x4C, 0xF6, 0xD1, 0x10,
+ 0x4A, 0x7D, 0xC0, 0xD0, 0xF7, 0x1B, 0x3E, 0x16, 0xF0, 0xA8,
+ 0x4F, 0xBC, 0x17, 0x73, 0x9A, 0x69, 0x73, 0x6C, 0x83, 0xE5,
+ 0x9D, 0x56, 0xBA, 0xF7, 0x08, 0x6D, 0xC5, 0x89, 0xFB, 0xAB,
+ 0x99, 0xD1, 0x37, 0x42, 0x89, 0x8F, 0xE1, 0xAE, 0xA3, 0x22,
+ 0x60, 0x98, 0xFD, 0x79, 0x32, 0xDB, 0xD2, 0xDC, 0x1A, 0xFF},
+ /* User Plane w/AES CTR enc. + ZUC int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x84, 0x3D, 0x5A, 0x2C, 0xBA, 0x02, 0xC1, 0x6C,
+ 0x8D, 0x78, 0xB5, 0x1F, 0x51, 0x70, 0x18, 0x61, 0x92, 0x10,
+ 0x18, 0xD1, 0x25, 0xB4, 0x4B, 0x24, 0x94, 0xAE, 0x6D, 0x45,
+ 0xA7, 0x00, 0x01, 0xF8, 0x97, 0x9F, 0xF9, 0x58, 0xD6, 0x62,
+ 0x30, 0x7D, 0xE9, 0x41, 0x69, 0x65, 0x1C, 0xBA, 0x79, 0x54,
+ 0x7E, 0xF5, 0xBD, 0x60, 0xEB, 0x9E, 0xC2, 0xC9, 0x54, 0x65,
+ 0x7D, 0xAC, 0xB6, 0x47, 0xFF, 0x1C, 0xF1, 0xAA, 0x69, 0x37},
+
+ /* User Plane w/ZUC enc. + NULL int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x47, 0x9B, 0x21, 0xD1, 0xB2, 0x99, 0x23, 0x56,
+ 0xC5, 0xFF, 0xC2, 0xB7, 0x7D, 0x30, 0xBA, 0xFB, 0x43, 0xED,
+ 0x79, 0xC9, 0x9D, 0x9D, 0x38, 0x35, 0xC6, 0x7B, 0xD0, 0xAA,
+ 0x33, 0x08, 0x88, 0x72, 0x16, 0x1D, 0xF7, 0xA0, 0xD9, 0xEC,
+ 0x73, 0x45, 0x51, 0x87, 0xFF, 0x64, 0xFB, 0x3C, 0xA6, 0xB5,
+ 0xD0, 0x1C, 0xD6, 0x90, 0x3D, 0x40, 0x54, 0x22, 0x2F, 0x6C,
+ 0xE4, 0xB1, 0x71, 0x15, 0x78, 0x54, 0x1D, 0xCD, 0x3A, 0xE0},
+ /* User Plane w/ZUC enc. + NULL int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x3F, 0x01, 0xCE, 0xBD, 0x8A, 0x98, 0x7B, 0x26,
+ 0xF1, 0x28, 0x74, 0xDC, 0x26, 0x2B, 0x02, 0xE8, 0x9C, 0xBC,
+ 0x98, 0x41, 0xC5, 0x03, 0x57, 0x48, 0x83, 0xBB, 0x8E, 0xCA,
+ 0x87, 0xCD, 0x8B, 0xE9, 0x96, 0x2A, 0x35, 0x5C, 0xD3, 0x32,
+ 0x53, 0xA7, 0x12, 0xC2, 0xBC, 0x0C, 0x75, 0x98, 0x8E, 0x29,
+ 0x85, 0xAF, 0x0A, 0xFF, 0xAC, 0x6A, 0x00, 0x19, 0xC1, 0x51,
+ 0x53, 0xDE, 0x78, 0x07, 0x6D, 0x10, 0x90, 0xF5, 0xBD, 0x56},
+ /* User Plane w/ZUC enc. + SNOW f9 int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x47, 0x9B, 0x21, 0xD1, 0xB2, 0x99, 0x23, 0x56,
+ 0xC5, 0xFF, 0xC2, 0xB7, 0x7D, 0x30, 0xBA, 0xFB, 0x43, 0xED,
+ 0x79, 0xC9, 0x9D, 0x9D, 0x38, 0x35, 0xC6, 0x7B, 0xD0, 0xAA,
+ 0x33, 0x08, 0x88, 0x72, 0x16, 0x1D, 0xF7, 0xA0, 0xD9, 0xEC,
+ 0x73, 0x45, 0x51, 0x87, 0xFF, 0x64, 0xFB, 0x3C, 0xA6, 0xB5,
+ 0xD0, 0x1C, 0xD6, 0x90, 0x3D, 0x40, 0x54, 0x22, 0x2F, 0x6C,
+ 0xE4, 0xB1, 0x71, 0x15, 0x78, 0x54, 0x69, 0x75, 0x1D, 0x76},
+ /* User Plane w/ZUC enc. + SNOW f9 int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x3F, 0x01, 0xCE, 0xBD, 0x8A, 0x98, 0x7B, 0x26,
+ 0xF1, 0x28, 0x74, 0xDC, 0x26, 0x2B, 0x02, 0xE8, 0x9C, 0xBC,
+ 0x98, 0x41, 0xC5, 0x03, 0x57, 0x48, 0x83, 0xBB, 0x8E, 0xCA,
+ 0x87, 0xCD, 0x8B, 0xE9, 0x96, 0x2A, 0x35, 0x5C, 0xD3, 0x32,
+ 0x53, 0xA7, 0x12, 0xC2, 0xBC, 0x0C, 0x75, 0x98, 0x8E, 0x29,
+ 0x85, 0xAF, 0x0A, 0xFF, 0xAC, 0x6A, 0x00, 0x19, 0xC1, 0x51,
+ 0x53, 0xDE, 0x78, 0x07, 0x6D, 0x10, 0x07, 0xA5, 0x82, 0xA1},
+ /* User Plane w/ZUC enc. + AES CMAC int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x47, 0x9B, 0x21, 0xD1, 0xB2, 0x99, 0x23, 0x56,
+ 0xC5, 0xFF, 0xC2, 0xB7, 0x7D, 0x30, 0xBA, 0xFB, 0x43, 0xED,
+ 0x79, 0xC9, 0x9D, 0x9D, 0x38, 0x35, 0xC6, 0x7B, 0xD0, 0xAA,
+ 0x33, 0x08, 0x88, 0x72, 0x16, 0x1D, 0xF7, 0xA0, 0xD9, 0xEC,
+ 0x73, 0x45, 0x51, 0x87, 0xFF, 0x64, 0xFB, 0x3C, 0xA6, 0xB5,
+ 0xD0, 0x1C, 0xD6, 0x90, 0x3D, 0x40, 0x54, 0x22, 0x2F, 0x6C,
+ 0xE4, 0xB1, 0x71, 0x15, 0x78, 0x54, 0x22, 0xBC, 0x1C, 0xCE},
+ /* User Plane w/ZUC enc. + AES CMAC int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x3F, 0x01, 0xCE, 0xBD, 0x8A, 0x98, 0x7B, 0x26,
+ 0xF1, 0x28, 0x74, 0xDC, 0x26, 0x2B, 0x02, 0xE8, 0x9C, 0xBC,
+ 0x98, 0x41, 0xC5, 0x03, 0x57, 0x48, 0x83, 0xBB, 0x8E, 0xCA,
+ 0x87, 0xCD, 0x8B, 0xE9, 0x96, 0x2A, 0x35, 0x5C, 0xD3, 0x32,
+ 0x53, 0xA7, 0x12, 0xC2, 0xBC, 0x0C, 0x75, 0x98, 0x8E, 0x29,
+ 0x85, 0xAF, 0x0A, 0xFF, 0xAC, 0x6A, 0x00, 0x19, 0xC1, 0x51,
+ 0x53, 0xDE, 0x78, 0x07, 0x6D, 0x10, 0x78, 0x4E, 0x54, 0x60},
+ /* User Plane w/ZUC enc. + ZUC int. UL for 12-bit SN */
+ (uint8_t[]){0x50, 0x01, 0x47, 0x9B, 0x21, 0xD1, 0xB2, 0x99, 0x23, 0x56,
+ 0xC5, 0xFF, 0xC2, 0xB7, 0x7D, 0x30, 0xBA, 0xFB, 0x43, 0xED,
+ 0x79, 0xC9, 0x9D, 0x9D, 0x38, 0x35, 0xC6, 0x7B, 0xD0, 0xAA,
+ 0x33, 0x08, 0x88, 0x72, 0x16, 0x1D, 0xF7, 0xA0, 0xD9, 0xEC,
+ 0x73, 0x45, 0x51, 0x87, 0xFF, 0x64, 0xFB, 0x3C, 0xA6, 0xB5,
+ 0xD0, 0x1C, 0xD6, 0x90, 0x3D, 0x40, 0x54, 0x22, 0x2F, 0x6C,
+ 0xE4, 0xB1, 0x71, 0x15, 0x78, 0x54, 0x49, 0x22, 0x1F, 0x23},
+ /* User Plane w/ZUC enc. + ZUC int. DL for 12-bit SN */
+ (uint8_t[]){0xA0, 0x00, 0x3F, 0x01, 0xCE, 0xBD, 0x8A, 0x98, 0x7B, 0x26,
+ 0xF1, 0x28, 0x74, 0xDC, 0x26, 0x2B, 0x02, 0xE8, 0x9C, 0xBC,
+ 0x98, 0x41, 0xC5, 0x03, 0x57, 0x48, 0x83, 0xBB, 0x8E, 0xCA,
+ 0x87, 0xCD, 0x8B, 0xE9, 0x96, 0x2A, 0x35, 0x5C, 0xD3, 0x32,
+ 0x53, 0xA7, 0x12, 0xC2, 0xBC, 0x0C, 0x75, 0x98, 0x8E, 0x29,
+ 0x85, 0xAF, 0x0A, 0xFF, 0xAC, 0x6A, 0x00, 0x19, 0xC1, 0x51,
+ 0x53, 0xDE, 0x78, 0x07, 0x6D, 0x10, 0xE6, 0x25, 0xE6, 0x7A},
+
+ /************************* 18-bit u-plane with int ************/
+ /* User Plane w/NULL enc. + NULL int. UL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69, 0x00, 0x00, 0x00, 0x00},
+ /* User Plane w/NULL enc. + NULL int. DL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35,
+ 0xF3, 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91,
+ 0xA3, 0x9C, 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36,
+ 0x47, 0x0E, 0x8F, 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B,
+ 0x01, 0x7F, 0x96, 0x46, 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC,
+ 0x69, 0x00, 0x00, 0x00, 0x00},
+ /* User Plane w/NULL enc. + SNOW f9 int. UL for 18-bit SN */
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9,
+ 0x68, 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13,
+ 0x52, 0x08, 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62,
+ 0x31, 0xA2, 0x76, 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A,
+ 0xD2, 0xEE, 0xD6, 0x93, 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA,
+ 0x91, 0x7F, 0x71, 0x17, 0x69},
+ /* User Plane w/NULL enc. + SNOW f9 int. DL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35, 0xF3,
+ 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C,
+ 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F,
+ 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC, 0x69, 0x84, 0x45, 0xA8, 0x88},
+ /* User Plane w/NULL enc. + AES CMAC int. UL for 18-bit SN */
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9, 0x68,
+ 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13, 0x52, 0x08,
+ 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62, 0x31, 0xA2, 0x76,
+ 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A, 0xD2, 0xEE, 0xD6, 0x93,
+ 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA, 0x91, 0x33, 0x9B, 0x38, 0xF7},
+ /* User Plane w/NULL enc. + AES CMAC int. DL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35, 0xF3,
+ 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C,
+ 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F,
+ 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC, 0x69, 0xD9, 0x0B, 0x89, 0x7F},
+ /* User Plane w/NULL enc. + ZUC int. UL for 18-bit SN */
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xB8, 0x33, 0x4F, 0x85, 0x8C, 0x2C, 0x65, 0x7D,
+ 0x8F, 0x5D, 0x40, 0x57, 0x60, 0x52, 0x4F, 0xB9, 0xF1, 0x69, 0xE9, 0x68,
+ 0x04, 0xFC, 0x7A, 0xBE, 0xD2, 0x5B, 0x4A, 0x21, 0x7F, 0x13, 0x52, 0x08,
+ 0xBA, 0xBD, 0x69, 0x51, 0xC9, 0x63, 0xCF, 0x06, 0x62, 0x31, 0xA2, 0x76,
+ 0xBA, 0xFC, 0x5A, 0xDB, 0xAA, 0xA3, 0x0B, 0x6A, 0xD2, 0xEE, 0xD6, 0x93,
+ 0xE4, 0x1B, 0x11, 0x4F, 0xC4, 0xD7, 0xDA, 0x91, 0xB5, 0xD9, 0x5D, 0xE0},
+ /* User Plane w/NULL enc. + ZUC int. DL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0xF8, 0xDB, 0x2D, 0x3F, 0x23, 0x82, 0x53, 0xFD,
+ 0x37, 0xDE, 0x88, 0x63, 0x08, 0x4F, 0xD3, 0x71, 0xFB, 0xEB, 0x35, 0xF3,
+ 0x64, 0xD3, 0x5E, 0xAF, 0x3F, 0x57, 0xC2, 0xE2, 0x91, 0x91, 0xA3, 0x9C,
+ 0xE6, 0x30, 0x69, 0x70, 0x33, 0x8A, 0x15, 0xD0, 0x36, 0x47, 0x0E, 0x8F,
+ 0xEE, 0x2C, 0x96, 0x0C, 0xD7, 0x7D, 0x70, 0x1B, 0x01, 0x7F, 0x96, 0x46,
+ 0x53, 0xB0, 0xA4, 0x7A, 0xF9, 0xDD, 0xCC, 0x69, 0xDA, 0xE9, 0x17, 0x96},
+ /* User Plane w/SNOW f8 enc. + NULL int. UL for 18-bit SN */
+ (uint8_t[]){0x0C, 0x00, 0x01, 0x9A, 0xAF, 0x1D, 0x21, 0x2F, 0x48, 0xB2, 0x30,
+ 0xCF, 0xBB, 0x8A, 0x2C, 0xB7, 0x57, 0xB6, 0x27, 0x89, 0x0D, 0x91,
+ 0x03, 0x2C, 0x2B, 0x8D, 0x29, 0x4A, 0xBD, 0x8D, 0x48, 0xD2, 0x69,
+ 0x37, 0xB1, 0xA1, 0x97, 0x12, 0xBD, 0x0A, 0x91, 0x4D, 0xEB, 0x76,
+ 0xC8, 0x96, 0x7A, 0x0A, 0x25, 0x08, 0xEB, 0x41, 0x30, 0x00, 0x33,
+ 0xC7, 0xFF, 0x33, 0x4E, 0xC1, 0xFE, 0x5C, 0x0F, 0x15, 0xE7, 0x9F,
+ 0x31, 0x55, 0xDA, 0x18, 0x4D},
+ /* User Plane w/SNOW f8 enc. + NULL int. DL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0x22, 0x2D, 0x15, 0xBA, 0x95, 0xAC, 0x47, 0x5A,
+ 0xE3, 0x90, 0x82, 0xEA, 0xC2, 0x93, 0x80, 0x23, 0xE9, 0xAC, 0xEA, 0x5D,
+ 0xAA, 0x70, 0x42, 0x04, 0x7C, 0xE6, 0xA6, 0x1D, 0x91, 0xAE, 0x2E, 0x43,
+ 0x60, 0x39, 0x23, 0x06, 0xD2, 0x31, 0x73, 0x98, 0xF0, 0x61, 0x47, 0xB5,
+ 0xC4, 0xB0, 0xB8, 0x31, 0x50, 0x9E, 0x37, 0x15, 0x0E, 0x0D, 0x29, 0x9D,
+ 0xB3, 0x78, 0xFB, 0x9D, 0x5C, 0x90, 0xF8, 0x80, 0x53, 0x93, 0xEF, 0x7C},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. UL for 18-bit SN */
+ (uint8_t[]){0x0C, 0x00, 0x01, 0x9A, 0xAF, 0x1D, 0x21, 0x2F, 0x48, 0xB2, 0x30,
+ 0xCF, 0xBB, 0x8A, 0x2C, 0xB7, 0x57, 0xB6, 0x27, 0x89, 0x0D, 0x91, 0x03,
+ 0x2C, 0x2B, 0x8D, 0x29, 0x4A, 0xBD, 0x8D, 0x48, 0xD2, 0x69, 0x37, 0xB1,
+ 0xA1, 0x97, 0x12, 0xBD, 0x0A, 0x91, 0x4D, 0xEB, 0x76, 0xC8, 0x96, 0x7A,
+ 0x0A, 0x25, 0x08, 0xEB, 0x41, 0x30, 0x00, 0x33, 0xC7, 0xFF, 0x33, 0x4E,
+ 0xC1, 0xFE, 0x5C, 0x0F, 0x15, 0xE7, 0x9F, 0x31, 0x2A, 0xAB, 0x0F, 0x24},
+ /* User Plane w/SNOW f8 enc. + SNOW f9 int. DL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0x22, 0x2D, 0x15, 0xBA, 0x95, 0xAC, 0x47, 0x5A,
+ 0xE3, 0x90, 0x82, 0xEA, 0xC2, 0x93, 0x80, 0x23, 0xE9, 0xAC, 0xEA, 0x5D,
+ 0xAA, 0x70, 0x42, 0x04, 0x7C, 0xE6, 0xA6, 0x1D, 0x91, 0xAE, 0x2E, 0x43,
+ 0x60, 0x39, 0x23, 0x06, 0xD2, 0x31, 0x73, 0x98, 0xF0, 0x61, 0x47, 0xB5,
+ 0xC4, 0xB0, 0xB8, 0x31, 0x50, 0x9E, 0x37, 0x15, 0x0E, 0x0D, 0x29, 0x9D,
+ 0xB3, 0x78, 0xFB, 0x9D, 0x5C, 0x90, 0xF8, 0x80, 0xD7, 0xD6, 0x47, 0xF4},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. UL for 18-bit SN */
+ (uint8_t[]){0x0C, 0x00, 0x01, 0x9A, 0xAF, 0x1D, 0x21, 0x2F, 0x48, 0xB2, 0x30,
+ 0xCF, 0xBB, 0x8A, 0x2C, 0xB7, 0x57, 0xB6, 0x27, 0x89, 0x0D, 0x91, 0x03,
+ 0x2C, 0x2B, 0x8D, 0x29, 0x4A, 0xBD, 0x8D, 0x48, 0xD2, 0x69, 0x37, 0xB1,
+ 0xA1, 0x97, 0x12, 0xBD, 0x0A, 0x91, 0x4D, 0xEB, 0x76, 0xC8, 0x96, 0x7A,
+ 0x0A, 0x25, 0x08, 0xEB, 0x41, 0x30, 0x00, 0x33, 0xC7, 0xFF, 0x33, 0x4E,
+ 0xC1, 0xFE, 0x5C, 0x0F, 0x15, 0xE7, 0x9F, 0x31, 0x66, 0x41, 0x20, 0xBA},
+ /* User Plane w/SNOW f8 enc. + AES CMAC int. DL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0x22, 0x2D, 0x15, 0xBA, 0x95, 0xAC, 0x47, 0x5A,
+ 0xE3, 0x90, 0x82, 0xEA, 0xC2, 0x93, 0x80, 0x23, 0xE9, 0xAC, 0xEA, 0x5D,
+ 0xAA, 0x70, 0x42, 0x04, 0x7C, 0xE6, 0xA6, 0x1D, 0x91, 0xAE, 0x2E, 0x43,
+ 0x60, 0x39, 0x23, 0x06, 0xD2, 0x31, 0x73, 0x98, 0xF0, 0x61, 0x47, 0xB5,
+ 0xC4, 0xB0, 0xB8, 0x31, 0x50, 0x9E, 0x37, 0x15, 0x0E, 0x0D, 0x29, 0x9D,
+ 0xB3, 0x78, 0xFB, 0x9D, 0x5C, 0x90, 0xF8, 0x80, 0x8A, 0x98, 0x66, 0x03},
+ /* User Plane w/SNOW f8 enc. + ZUC int. UL for 18-bit SN */
+ (uint8_t[]){0x0C, 0x00, 0x01, 0x9A, 0xAF, 0x1D, 0x21, 0x2F, 0x48, 0xB2, 0x30,
+ 0xCF, 0xBB, 0x8A, 0x2C, 0xB7, 0x57, 0xB6, 0x27, 0x89, 0x0D, 0x91, 0x03,
+ 0x2C, 0x2B, 0x8D, 0x29, 0x4A, 0xBD, 0x8D, 0x48, 0xD2, 0x69, 0x37, 0xB1,
+ 0xA1, 0x97, 0x12, 0xBD, 0x0A, 0x91, 0x4D, 0xEB, 0x76, 0xC8, 0x96, 0x7A,
+ 0x0A, 0x25, 0x08, 0xEB, 0x41, 0x30, 0x00, 0x33, 0xC7, 0xFF, 0x33, 0x4E,
+ 0xC1, 0xFE, 0x5C, 0x0F, 0x15, 0xE7, 0x9F, 0x31, 0xE0, 0x03, 0x45, 0xAD},
+ /* User Plane w/SNOW f8 enc. + ZUC int. DL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0x22, 0x2D, 0x15, 0xBA, 0x95, 0xAC, 0x47, 0x5A,
+ 0xE3, 0x90, 0x82, 0xEA, 0xC2, 0x93, 0x80, 0x23, 0xE9, 0xAC, 0xEA, 0x5D,
+ 0xAA, 0x70, 0x42, 0x04, 0x7C, 0xE6, 0xA6, 0x1D, 0x91, 0xAE, 0x2E, 0x43,
+ 0x60, 0x39, 0x23, 0x06, 0xD2, 0x31, 0x73, 0x98, 0xF0, 0x61, 0x47, 0xB5,
+ 0xC4, 0xB0, 0xB8, 0x31, 0x50, 0x9E, 0x37, 0x15, 0x0E, 0x0D, 0x29, 0x9D,
+ 0xB3, 0x78, 0xFB, 0x9D, 0x5C, 0x90, 0xF8, 0x80, 0x89, 0x7A, 0xF8, 0xEA},
+ /* User Plane w/AES CTR enc. + NULL int. UL for 18-bit SN */
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xBF, 0x31, 0x94, 0xCF, 0x6E, 0x99, 0x84, 0x08,
+ 0xF1, 0x90, 0xC2, 0x22, 0xD0, 0xD2, 0x3D, 0x44, 0x75, 0x7F, 0xC5, 0x0F,
+ 0xAC, 0x7C, 0x18, 0x46, 0xA5, 0x3E, 0x2F, 0x0F, 0x26, 0x9E, 0x5A, 0x49,
+ 0xF7, 0xCB, 0x70, 0x17, 0xBC, 0x01, 0x1D, 0xA3, 0x65, 0x0E, 0x4B, 0x53,
+ 0x14, 0x73, 0x76, 0xDE, 0x54, 0xA0, 0xF9, 0x4C, 0xC2, 0x8F, 0x02, 0x88,
+ 0x36, 0xC7, 0xC4, 0x5A, 0x57, 0x7D, 0xA1, 0x0D, 0xC1, 0x66, 0x96, 0xC8},
+ /* User Plane w/AES CTR enc. + NULL int. DL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0x01, 0x0D, 0x4B, 0x5E, 0xD3, 0xCE, 0x96, 0xE1,
+ 0x9A, 0x9D, 0xB3, 0x01, 0xD6, 0x40, 0x50, 0x00, 0x6C, 0x63, 0xFD, 0x37,
+ 0xD9, 0xBB, 0x3B, 0x76, 0xE5, 0x7D, 0x3C, 0xFC, 0xE3, 0x9D, 0x45, 0x4A,
+ 0x07, 0x14, 0xD3, 0x14, 0xBC, 0x7E, 0x57, 0xAB, 0xB0, 0x8D, 0x8F, 0x42,
+ 0x39, 0x22, 0xB2, 0xF6, 0x5F, 0xBD, 0x58, 0xE3, 0xE0, 0xDB, 0xD5, 0x7F,
+ 0xFB, 0x78, 0x95, 0xE1, 0x5E, 0x36, 0xF8, 0x52, 0x98, 0x15, 0x68, 0x35},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. UL for 18-bit SN */
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xBF, 0x31, 0x94, 0xCF, 0x6E, 0x99, 0x84, 0x08,
+ 0xF1, 0x90, 0xC2, 0x22, 0xD0, 0xD2, 0x3D, 0x44, 0x75, 0x7F, 0xC5, 0x0F,
+ 0xAC, 0x7C, 0x18, 0x46, 0xA5, 0x3E, 0x2F, 0x0F, 0x26, 0x9E, 0x5A, 0x49,
+ 0xF7, 0xCB, 0x70, 0x17, 0xBC, 0x01, 0x1D, 0xA3, 0x65, 0x0E, 0x4B, 0x53,
+ 0x14, 0x73, 0x76, 0xDE, 0x54, 0xA0, 0xF9, 0x4C, 0xC2, 0x8F, 0x02, 0x88,
+ 0x36, 0xC7, 0xC4, 0x5A, 0x57, 0x7D, 0xA1, 0x0D, 0xBE, 0x17, 0x81, 0xA1},
+ /* User Plane w/AES CTR enc. + SNOW f9 int. DL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0x01, 0x0D, 0x4B, 0x5E, 0xD3, 0xCE, 0x96, 0xE1,
+ 0x9A, 0x9D, 0xB3, 0x01, 0xD6, 0x40, 0x50, 0x00, 0x6C, 0x63, 0xFD, 0x37,
+ 0xD9, 0xBB, 0x3B, 0x76, 0xE5, 0x7D, 0x3C, 0xFC, 0xE3, 0x9D, 0x45, 0x4A,
+ 0x07, 0x14, 0xD3, 0x14, 0xBC, 0x7E, 0x57, 0xAB, 0xB0, 0x8D, 0x8F, 0x42,
+ 0x39, 0x22, 0xB2, 0xF6, 0x5F, 0xBD, 0x58, 0xE3, 0xE0, 0xDB, 0xD5, 0x7F,
+ 0xFB, 0x78, 0x95, 0xE1, 0x5E, 0x36, 0xF8, 0x52, 0x1C, 0x50, 0xC0, 0xBD},
+ /* User Plane w/AES CTR enc. + AES CMAC int. UL for 18-bit SN */
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xBF, 0x31, 0x94, 0xCF, 0x6E, 0x99, 0x84, 0x08,
+ 0xF1, 0x90, 0xC2, 0x22, 0xD0, 0xD2, 0x3D, 0x44, 0x75, 0x7F, 0xC5, 0x0F,
+ 0xAC, 0x7C, 0x18, 0x46, 0xA5, 0x3E, 0x2F, 0x0F, 0x26, 0x9E, 0x5A, 0x49,
+ 0xF7, 0xCB, 0x70, 0x17, 0xBC, 0x01, 0x1D, 0xA3, 0x65, 0x0E, 0x4B, 0x53,
+ 0x14, 0x73, 0x76, 0xDE, 0x54, 0xA0, 0xF9, 0x4C, 0xC2, 0x8F, 0x02, 0x88,
+ 0x36, 0xC7, 0xC4, 0x5A, 0x57, 0x7D, 0xA1, 0x0D, 0xF2, 0xFD, 0xAE, 0x3F},
+ /* User Plane w/AES CTR enc. + AES CMAC int. DL for 18-bit SN */
+ (uint8_t[]){0xF8, 0x00, 0x00, 0x01, 0x0D, 0x4B, 0x5E, 0xD3, 0xCE, 0x96, 0xE1,
+ 0x9A, 0x9D, 0xB3, 0x01, 0xD6, 0x40, 0x50, 0x00, 0x6C, 0x63, 0xFD, 0x37,
+ 0xD9, 0xBB, 0x3B, 0x76, 0xE5, 0x7D, 0x3C, 0xFC, 0xE3, 0x9D, 0x45, 0x4A,
+ 0x07, 0x14, 0xD3, 0x14, 0xBC, 0x7E, 0x57, 0xAB, 0xB0, 0x8D, 0x8F, 0x42,
+ 0x39, 0x22, 0xB2, 0xF6, 0x5F, 0xBD, 0x58, 0xE3, 0xE0, 0xDB, 0xD5, 0x7F,
+ 0xFB, 0x78, 0x95, 0xE1, 0x5E, 0x36, 0xF8, 0x52, 0x41, 0x1E, 0xE1, 0x4A},
+ /* User Plane w/AES CTR enc. + ZUC int. UL for 18-bit SN */
+ (uint8_t[]){0x0C, 0x00, 0x01, 0xBF, 0x31, 0x94, 0xCF, 0x6E, 0x99, 0x84, 0x08,
+ 0xF1, 0x90, 0xC2, 0x22, 0xD0, 0xD2, 0x3D, 0x44, 0x75, 0x7F, 0xC5, 0x0F,
+ 0xAC, 0x7C, 0x18, 0x46, 0xA5, 0x3E, 0x2F, 0x0F, 0x26, 0x9E, 0x5A, 0x49,
+ 0xF7, 0xCB, 0x70, 0x17, 0xBC, 0x01, 0x1D, 0xA3, 0x65, 0x0E, 0x4B, 0x53,
+ 0x14, 0x73, 0x76, 0xDE, 0x54, 0xA0, 0xF9, 0x4C, 0xC2,